diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 06b883f82beca7f7111d0c0f2c75013d277a9528..8f471360128f923db9614b1ba4539daa954784da 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -64,80 +64,6 @@ fmt_and_clippy:
     - cargo clippy -- -V
     - cargo clippy --all --tests -- -D warnings
 
-.docker_release_build:
-  stage: build
-  rules:
-    - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
-      when: manual
-      changes:
-        - node/specs/$CHAIN-raw.json
-  variables:
-    IMAGE_NAME: "duniter/duniter-v2s-$CHAIN"
-    IMAGE_TAG: "latest"
-    PODMAN_BUILD_OPTIONS: "--platform linux/amd64 --build-arg chain=$CHAIN"
-  script:
-    - echo podman build --layers --tag "$IMAGE_NAME:$IMAGE_TAG" -f docker/Dockerfile $PODMAN_BUILD_OPTIONS .
-    - podman build --layers --tag "$IMAGE_NAME:$IMAGE_TAG" -f docker/Dockerfile $PODMAN_BUILD_OPTIONS .
-  tags:
-    - podman
-
-.docker_release_deploy:
-  stage: deploy
-  rules:
-    - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
-      when: manual
-      changes:
-        - node/specs/$CHAIN-raw.json
-  variables:
-    IMAGE_NAME: "duniter/duniter-v2s-$CHAIN"
-    IMAGE_TAG: "latest"
-  script:
-    - echo podman push "localhost/$IMAGE_NAME:$IMAGE_TAG" "docker://docker.io/$IMAGE_NAME:$IMAGE_TAG"
-    - podman podman push "localhost/$IMAGE_NAME:$IMAGE_TAG" "docker://docker.io/$IMAGE_NAME:$IMAGE_TAG"
-  tags:
-    - podman
-
-gdev_docker_release_build:
-  extends: .docker_release_build
-  variables:
-    CHAIN: gdev
-
-gtest_docker_release_build:
-  extends: .docker_release_build
-  variables:
-    CHAIN: gtest
-
-gdev_docker_release_deploy:
-  extends: .docker_release_deploy
-  needs: ['gdev_docker_release_build']
-  variables:
-    CHAIN: gdev
-
-gtest_docker_release_deploy:
-  extends: .docker_release_deploy
-  needs: ['gtest_docker_release_build']
-  variables:
-    CHAIN: gtest
-
-.docker_deploy:
-  stage: deploy
-  before_script:
-    - sh -c "[ -n '$DUNITERTEAM_PASSWD' ] || ( echo No access to environment variable 'DUNITERTEAM_PASSWD'; exit 1 )"
-    - podman login -u "duniterteam" -p "$DUNITERTEAM_PASSWD" docker.io
-  tags:
-    - podman
-
-.docker_deploy_multiplatform:
-  extends: .docker_deploy
-  script:
-    - podman manifest rm "$MANIFEST" 2>/dev/null || true
-    - podman build --layers --platform linux/amd64,linux/arm64 --manifest "$MANIFEST" -f docker/Dockerfile $PODMAN_BUILD_OPTIONS .
-    - podman manifest push --all "$MANIFEST" "docker://docker.io/$IMAGE_NAME:$IMAGE_TAG"
-  after_script:
-    - podman manifest rm "$MANIFEST"
-  variables:
-    MANIFEST: "localhost/manifest-$IMAGE_NAME:$IMAGE_TAG"
-
 tests:
   stage: tests
   image: rust:1-bullseye
@@ -161,23 +87,41 @@ tests:
     - cargo tu
     - cargo cucumber
 
-deploy_docker_release_tag_multiplatform:
+.deploy_docker_multiplatform:
   stage: deploy
-  needs: ["deploy_docker_release_tag"]
-  extends: .docker_deploy_multiplatform
   rules:
-    - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^(v|runtime-)[0-9].*/"
+    - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
+      when: manual
+      changes:
+        - node/specs/$CHAIN-raw.json
     - when: never
+  before_script:
+    - sh -c "[ -n '$DUNITERTEAM_PASSWD' ] || ( echo No access to environment variable 'DUNITERTEAM_PASSWD'; exit 1 )"
+    - podman login -u "duniterteam" -p "$DUNITERTEAM_PASSWD" docker.io
   script:
-    - !reference [.docker_deploy_multiplatform, script]
+    - export MILESTONE=$(echo release/runtime-700 | sed -e "s/release\///g")
+    - export MANIFEST=localhost/manifest-$IMAGE_NAME:$MILESTONE
+    - podman manifest rm "$MANIFEST" 2>/dev/null || true
+    - podman build --layers --platform linux/amd64,linux/arm64 --manifest "$MANIFEST" -f docker/Dockerfile $PODMAN_BUILD_OPTIONS .
+    - podman manifest push --all "$MANIFEST" "docker://docker.io/$IMAGE_NAME:$MILESTONE"
     - podman manifest push --all "$MANIFEST" "docker://docker.io/$IMAGE_NAME:latest"
+  after_script:
+    - podman manifest rm "$MANIFEST"
+  variables:
+    IMAGE_NAME: "duniter/duniter-v2s-$CHAIN"
+
+gdev_docker_deploy:
+  extends: .deploy_docker_multiplatform
   variables:
-    IMAGE_NAME: "duniter/duniter-v2s"
-    IMAGE_TAG: "$CI_COMMIT_TAG"
+    CHAIN: gdev
+
+gtest_docker_deploy:
+  extends: .deploy_docker_multiplatform
+  variables:
+    CHAIN: gtest
 
 readme_docker_release_tag:
   stage: deploy_readme
-  needs: ["deploy_docker_release_tag"]
   rules:
     - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^(v|runtime-)[0-9].*/"
     - when: never
diff --git a/docker/README.md b/docker/README.md
index 673851b18dc5e30a6c7ae97d7e6aaf9228735b95..3f7791239ad9ad925d8ccab8945044d8a2d1ff50 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -11,7 +11,7 @@ version: "3.5"
 
 services:
   duniter-mirror:
-    image: duniter/duniter-v2s:latest
+    image: duniter/duniter-v2s-gdev:latest
     restart: unless-stopped
     ports:
       # Prometheus endpoint
@@ -39,7 +39,7 @@ version: "3.5"
 
 services:
   duniter-validator:
-    image: duniter/duniter-v2s:latest
+    image: duniter/duniter-v2s-gdev:latest
     restart: unless-stopped
     ports:
       # Prometheus endpoint
@@ -59,17 +59,17 @@ volumes:
 
 ## Environment variables
 
-| Name | Description | Default |
-| ---- | ----------- | ------- |
-| `DUNITER_NODE_NAME` | The node name. This name will appear on the Substrate telemetry server when telemetry is enabled. | Random name |
-| `DUNITER_CHAIN_NAME` | The currency to process. "gdev" uses the embeded chainspec. A path allows to use a local json raw chainspec. | `dev` (development mode) |
-| `DUNITER_PUBLIC_ADDR` | The libp2p public address base. See [libp2p documentation](https://docs.libp2p.io/concepts/fundamentals/addressing/). This variable is useful when the node is behind a reverse proxy with its ports not directly exposed.<br>Note: the `p2p/<peer_id>` part of the address shouldn't be set in this variable. It is automatically added by Duniter. | duniter-v2s guesses one from the node's IPv4 address. |
-| `DUNITER_LISTEN_ADDR` | The libp2p listen address. See [libp2p documentation](https://docs.libp2p.io/concepts/fundamentals/addressing/). This variable is useful when running a validator node behind a reverse proxy, to force the P2P end point in websocket mode with:<br>  `DUNITER_LISTEN_ADDR=/ip4/0.0.0.0/tcp/30333/ws` | Non validator node: `/ip4/0.0.0.0/tcp/30333/ws`<br>Validator node: `/ip4/0.0.0.0/tcp/30333` |
-| `DUNITER_RPC_CORS` | Value of the polkadot `--rpc-cors` option. | `all` |
-| `DUNITER_VALIDATOR` | Boolean (`true` / `false`) to run the node in validator mode. Configure the polkadot options `--validator --rpc-methods Unsafe`. | `false` |
-| `DUNITER_DISABLE_PROMETHEUS` | Boolean to disable the Prometheus endpoint on port 9615. | `false` |
-| `DUNITER_DISABLE_TELEMETRY` | Boolean to disable connecting to the Substrate telemetry server. | `false` |
-| `DUNITER_PRUNING_PROFILE` | * `default`<br> * `archive`: keep all blocks and state blocks<br> * `light`: keep only last 256 state blocks and last 14400 blocks (one day duration) | `default` |
+| Name                         | Description                                                                                                                                                                                                                                                                                                                                          | Default                                                                                     |
+|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
+| `DUNITER_NODE_NAME`          | The node name. This name will appear on the Substrate telemetry server when telemetry is enabled.                                                                                                                                                                                                                                                    | Random name                                                                                 |
+| `DUNITER_CHAIN_NAME`         | The currency to process. "gdev" uses the embeded chainspec. A path allows to use a local json raw chainspec.                                                                                                                                                                                                                                         | `dev` (development mode)                                                                    |
+| `DUNITER_PUBLIC_ADDR`        | The libp2p public address base. See [libp2p documentation](https://docs.libp2p.io/concepts/fundamentals/addressing/). This variable is useful when the node is behind a reverse proxy with its ports not directly exposed.<br>Note: the `p2p/<peer_id>` part of the address shouldn't be set in this variable. It is automatically added by Duniter. | duniter-v2s guesses one from the node's IPv4 address.                                       |
+| `DUNITER_LISTEN_ADDR`        | The libp2p listen address. See [libp2p documentation](https://docs.libp2p.io/concepts/fundamentals/addressing/). This variable is useful when running a validator node behind a reverse proxy, to force the P2P end point in websocket mode with:<br>  `DUNITER_LISTEN_ADDR=/ip4/0.0.0.0/tcp/30333/ws`                                               | Non validator node: `/ip4/0.0.0.0/tcp/30333/ws`<br>Validator node: `/ip4/0.0.0.0/tcp/30333` |
+| `DUNITER_RPC_CORS`           | Value of the polkadot `--rpc-cors` option.                                                                                                                                                                                                                                                                                                           | `all`                                                                                       |
+| `DUNITER_VALIDATOR`          | Boolean (`true` / `false`) to run the node in validator mode. Configure the polkadot options `--validator --rpc-methods Unsafe`.                                                                                                                                                                                                                     | `false`                                                                                     |
+| `DUNITER_DISABLE_PROMETHEUS` | Boolean to disable the Prometheus endpoint on port 9615.                                                                                                                                                                                                                                                                                             | `false`                                                                                     |
+| `DUNITER_DISABLE_TELEMETRY`  | Boolean to disable connecting to the Substrate telemetry server.                                                                                                                                                                                                                                                                                     | `false`                                                                                     |
+| `DUNITER_PRUNING_PROFILE`    | * `default`<br> * `archive`: keep all blocks and state blocks<br> * `light`: keep only last 256 state blocks and last 14400 blocks (one day duration)                                                                                                                                                                                                | `default`                                                                                   |
 
 ## Other Duniter options
 
@@ -93,6 +93,6 @@ docker compose up -d
 
 To run duniter from the command line without the default configuration detailed in the "Environment variables" section use `--` as the first argument. For example:
 ```
-$ docker run --rm duniter/duniter-v2s:latest -- key generate
-$ docker run --rm duniter/duniter-v2s:latest -- --chain gdev ...
+$ docker run --rm duniter/duniter-v2s-gdev:latest -- key generate
+$ docker run --rm duniter/duniter-v2s-gdev:latest -- --chain gdev ...
 ```