diff --git a/.github/workflows/_docker-build.yml b/.github/workflows/_docker-build.yml index 817ce348705d..af54b3fb78b1 100644 --- a/.github/workflows/_docker-build.yml +++ b/.github/workflows/_docker-build.yml @@ -3,12 +3,12 @@ name: Reusable docker server image build workflow on: workflow_call: inputs: - namespace_repository: + namespace-repository: description: "The namespace and repository in the following format `namespace/repository` e.g. (flwr/base)." required: true type: string - file: - description: "Path to the Dockerfile." + file-dir: + description: "Path to the directory that contains the Dockerfile." required: true type: string build-args: @@ -58,7 +58,7 @@ jobs: id: meta uses: docker/metadata-action@31cebacef4805868f9ce9a0cb03ee36c32df2ac4 # v5.3.0 with: - images: ${{ inputs.namespace_repository }} + images: ${{ inputs.namespace-repository }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 @@ -74,9 +74,9 @@ jobs: uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 with: platforms: ${{ matrix.platform.docker }} - context: "{{defaultContext}}:${{ inputs.file }}" + context: "{{defaultContext}}:${{ inputs.file-dir }}" build-args: ${{ inputs.build-args }} - outputs: type=image,name=${{ inputs.namespace_repository }},push-by-digest=true,name-canonical=true,push=true + outputs: type=image,name=${{ inputs.namespace-repository }},push-by-digest=true,name-canonical=true,push=true - name: Export digest run: | @@ -110,7 +110,7 @@ jobs: id: meta uses: docker/metadata-action@31cebacef4805868f9ce9a0cb03ee36c32df2ac4 # v5.3.0 with: - images: ${{ inputs.namespace_repository }} + images: ${{ inputs.namespace-repository }} tags: ${{ inputs.tags }} - name: Set up Docker Buildx @@ -126,6 +126,6 @@ jobs: working-directory: /tmp/digests run: | docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf '${{ inputs.namespace_repository }}@sha256:%s ' *) + $(printf '${{ inputs.namespace-repository }}@sha256:%s ' *) - name: Inspect image - run: docker buildx imagetools inspect ${{ inputs.namespace_repository }}:${{ steps.meta.outputs.version }} + run: docker buildx imagetools inspect ${{ inputs.namespace-repository }}:${{ steps.meta.outputs.version }} diff --git a/.github/workflows/docker-base.yml b/.github/workflows/docker-base.yml index bddc70385212..48ea039e40d8 100644 --- a/.github/workflows/docker-base.yml +++ b/.github/workflows/docker-base.yml @@ -2,8 +2,8 @@ name: Build docker base image on: push: - # paths: - # - src/docker/base + branches: ["main"] + paths: ["src/docker/base/*"] permissions: contents: read @@ -40,8 +40,8 @@ jobs: matrix: python-version: [3.11] with: - namespace_repository: flwr/base - file: src/docker/base + namespace-repository: flwr/base + file-dir: src/docker/base build-args: | PYTHON_VERSION=${{ matrix.python-version }} PIP_VERSION=${{ needs.parameters.outputs.pip-version }} diff --git a/.github/workflows/docker-server.yml b/.github/workflows/docker-server.yml index 3e351c6e9b43..f182f3def88c 100644 --- a/.github/workflows/docker-server.yml +++ b/.github/workflows/docker-server.yml @@ -8,10 +8,10 @@ on: required: true type: string base-image-version: - description: "Version of Flower base image." + description: "Version of the Flower base image." required: false type: string - default: "22.04" + default: "py3.11-ubuntu22.04" permissions: contents: read @@ -20,8 +20,8 @@ jobs: build-server-images: uses: ./.github/workflows/_docker-build.yml with: - namespace_repository: flwr/server - file: src/docker/server + namespace-repository: flwr/server + file-dir: src/docker/server build-args: | FLWR_VERSION=${{ github.event.inputs.flwr-version }} BASE_IMAGE_VERSION=${{ github.event.inputs.base-image-version }} @@ -36,6 +36,7 @@ jobs: summary: runs-on: ubuntu-22.04 needs: build-server-images + timeout-minutes: 5 steps: - run: | echo "### Images" >> $GITHUB_STEP_SUMMARY diff --git a/src/docker/server/Dockerfile b/src/docker/server/Dockerfile index a20864e7d7bf..9bf3214bb42c 100644 --- a/src/docker/server/Dockerfile +++ b/src/docker/server/Dockerfile @@ -1,7 +1,7 @@ # Copyright 2023 Flower Labs GmbH. All Rights Reserved. -ARG BASE_IMAGE_VERSION=22.04 -FROM flwr/base:$BASE_IMAGE_VERSION +ARG BASE_IMAGE_VERSION=py3.11-ubuntu22.04 +FROM flwr/base:$BASE_IMAGE_VERSION as server WORKDIR /app ARG FLWR_VERSION @@ -9,5 +9,5 @@ RUN python -m pip install -U --no-cache-dir flwr[rest]==${FLWR_VERSION} ENTRYPOINT ["python", "-c", "from flwr.server import run_server; run_server()"] # Test if Flower can be successfully installed and imported -FROM flwr/base:$BASE_VERSION +FROM server as test RUN python -c "from flwr.server import run_server"