diff --git a/polkadot/.github/workflows/publish-docker-manual.yml b/polkadot/.github/workflows/publish-docker-manual.yml
new file mode 100644
index 0000000000000000000000000000000000000000..23f87b576fb094c925b4897aca650938e33e56f6
--- /dev/null
+++ b/polkadot/.github/workflows/publish-docker-manual.yml
@@ -0,0 +1,51 @@
+name: Publish Docker image (manual dispatch)
+
+on:
+  workflow_dispatch:
+    inputs:
+      version:
+        description: version to build/release
+        default: v0.9.17
+        required: true
+      date:
+        description: release date of version
+        default: "2022-02-23T19:11:58Z"
+        required: true
+
+jobs:
+  main:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout sources
+        uses: actions/checkout@v2
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v1
+      - name: Cache Docker layers
+        uses: actions/cache@v2
+        with:
+         path: /tmp/.buildx-cache
+         key: ${{ runner.os }}-buildx-${{ github.sha }}
+         restore-keys: |
+           ${{ runner.os }}-buildx-
+      - name: Login to Dockerhub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Build and push
+        id:   docker_build
+        uses: docker/build-push-action@v2
+        with:
+          push: true
+          file: scripts/dockerfiles/polkadot_injected_release.Dockerfile
+          tags: |
+            parity/polkadot:latest
+            parity/polkadot:${{ github.event.inputs.version }}
+          build-args: |
+            POLKADOT_VERSION=${{ github.event.inputs.version }}
+            VCS_REF=${{ github.ref }}
+            BUILD_DATE=${{ github.event.inputs.date }}
+          cache-from: type=local,src=/tmp/.buildx-cache
+          cache-to: type=local,dest=/tmp/.buildx-cache
+      - name: Image digest
+        run: echo ${{ steps.docker_build.outputs.digest }}