diff --git a/.github/workflows/docker-readme.yml b/.github/workflows/docker-readme.yml
new file mode 100644
index 000000000000..29dd787d638e
--- /dev/null
+++ b/.github/workflows/docker-readme.yml
@@ -0,0 +1,51 @@
+name: Update Docker READMEs
+
+on:
+ push:
+ branches:
+ - 'main'
+ paths:
+ - 'src/docker/**/README.md'
+
+jobs:
+ collect:
+ if: ${{ github.repository == 'adap/flower' }}
+ name: Collect Docker READMEs
+ runs-on: ubuntu-22.04
+ timeout-minutes: 10
+ outputs:
+ readme_files: ${{ steps.filter.outputs.readme_files }}
+ steps:
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ id: filter
+ with:
+ list-files: "json"
+ filters: |
+ readme:
+ - 'src/docker/**/README.md'
+
+ update:
+ if: ${{ needs.collect.outputs.readme_files != '' && toJson(fromJson(needs.collect.outputs.readme_files)) != '[]' }}
+ name: Update Docker READMEs
+ runs-on: ubuntu-22.04
+ timeout-minutes: 10
+ needs: collect
+ strategy:
+ matrix:
+ readme_path: ${{ fromJSON(needs.collect.outputs.readme_files) }}
+
+ steps:
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - id: repository
+ run: echo "name=$(basename $(dirname ${{ matrix.readme_path }}))" >> "$GITHUB_OUTPUT"
+
+ - name: Docker Hub Description
+ uses: peter-evans/dockerhub-description@e98e4d1628a5f3be2be7c231e50981aee98723ae # v4.0.0
+ with:
+ repository: flwr/${{ steps.repository.outputs.name }}
+ readme-filepath: ${{ matrix.readme_path }}
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
diff --git a/src/docker/base/README.md b/src/docker/base/README.md
new file mode 100644
index 000000000000..e61899525f19
--- /dev/null
+++ b/src/docker/base/README.md
@@ -0,0 +1,38 @@
+# Flower Base
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
+ - nightly image uses Python 3.11 and Ubuntu 22.04
+- `1.10.0-py3.11-alpine3.19`
+- `1.10.0-py3.11-ubuntu22.04`
+- `1.10.0-py3.10-ubuntu22.04`
+- `1.10.0-py3.9-ubuntu22.04`
+- `1.10.0-py3.8-ubuntu22.04`
+- `1.9.0-py3.11-alpine3.19`
+- `1.9.0-py3.11-ubuntu22.04`
+- `1.9.0-py3.10-ubuntu22.04`
+- `1.9.0-py3.9-ubuntu22.04`
+- `1.9.0-py3.8-ubuntu22.04`
+- `1.8.0-py3.11-alpine3.19`
+- `1.8.0-py3.11-ubuntu22.04`
+- `1.8.0-py3.10-ubuntu22.04`
+- `1.8.0-py3.9-ubuntu22.04`
+- `1.8.0-py3.8-ubuntu22.04`
diff --git a/src/docker/clientapp/README.md b/src/docker/clientapp/README.md
new file mode 100644
index 000000000000..ac50d4dc9b8f
--- /dev/null
+++ b/src/docker/clientapp/README.md
@@ -0,0 +1,22 @@
+# Flower ClientApp
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
diff --git a/src/docker/serverapp/README.md b/src/docker/serverapp/README.md
new file mode 100644
index 000000000000..c4283fa51f00
--- /dev/null
+++ b/src/docker/serverapp/README.md
@@ -0,0 +1,34 @@
+# Flower ServerApp
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
+- `1.10.0`, `1.10.0-py3.11-ubuntu22.04`
+- `1.10.0-py3.10-ubuntu22.04`
+- `1.10.0-py3.9-ubuntu22.04`
+- `1.10.0-py3.8-ubuntu22.04`
+- `1.9.0`, `1.9.0-py3.11-ubuntu22.04`
+- `1.9.0-py3.10-ubuntu22.04`
+- `1.9.0-py3.9-ubuntu22.04`
+- `1.9.0-py3.8-ubuntu22.04`
+- `1.8.0`, `1.8.0-py3.11-ubuntu22.04`
+- `1.8.0-py3.10-ubuntu22.04`
+- `1.8.0-py3.9-ubuntu22.04`
+- `1.8.0-py3.8-ubuntu22.04`
diff --git a/src/docker/superexec/README.md b/src/docker/superexec/README.md
new file mode 100644
index 000000000000..03dcc2cba5c9
--- /dev/null
+++ b/src/docker/superexec/README.md
@@ -0,0 +1,26 @@
+# Flower SuperExec
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
+- `1.10.0`, `1.10.0-py3.11-ubuntu22.04`
+- `1.10.0-py3.10-ubuntu22.04`
+- `1.10.0-py3.9-ubuntu22.04`
+- `1.10.0-py3.8-ubuntu22.04`
diff --git a/src/docker/superlink/README.md b/src/docker/superlink/README.md
new file mode 100644
index 000000000000..3da3c16909b8
--- /dev/null
+++ b/src/docker/superlink/README.md
@@ -0,0 +1,28 @@
+# Flower SuperLink
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
+- `1.10.0`, `1.10.0-py3.11-alpine3.19`
+- `1.10.0-py3.11-ubuntu22.04`
+- `1.9.0`, `1.9.0-py3.11-alpine3.19`
+- `1.9.0-py3.11-ubuntu22.04`
+- `1.8.0`, `1.8.0-py3.11-alpine3.19`
+- `1.8.0-py3.11-ubuntu22.04`
diff --git a/src/docker/supernode/README.md b/src/docker/supernode/README.md
new file mode 100644
index 000000000000..defee36b35ae
--- /dev/null
+++ b/src/docker/supernode/README.md
@@ -0,0 +1,30 @@
+# Flower SuperNode
+
+
+
+
+
+
+
+## Quick reference
+
+- **Learn more:**
+ [Flower Docs](https://flower.ai/docs/framework/how-to-run-flower-using-docker.html)
+
+- **Where to get help:**
+ [Flower Discuss](https://discuss.flower.ai), [Slack](https://flower.ai/join-slack) or [GitHub](https://github.com/adap/flower)
+
+- **Supported architectures:**
+ `amd64`, `arm64v8`
+
+## Supported tags
+
+- `nightly`, `.dev` e.g. `1.11.0.dev20240724`
+- `1.10.0`, `1.10.0-py3.11-ubuntu22.04`
+- `1.10.0-py3.10-ubuntu22.04`
+- `1.10.0-py3.9-ubuntu22.04`
+- `1.10.0-py3.8-ubuntu22.04`
+- `1.9.0`, `1.9.0-py3.11-ubuntu22.04`
+- `1.9.0-py3.10-ubuntu22.04`
+- `1.9.0-py3.9-ubuntu22.04`
+- `1.9.0-py3.8-ubuntu22.04`