From 67fd5d3e8de12831c9c364593194a8e73c835dd7 Mon Sep 17 00:00:00 2001 From: Raj Burnwal Date: Wed, 18 Sep 2024 11:24:46 +0530 Subject: [PATCH] added multi-arch build for docker. (#553) * added multi-arch build for pebblo docker. --------- Co-authored-by: Raj Burnwal --- .github/workflows/docker_multiarch_build.yaml | 42 +++++++++++++++++++ .github/workflows/docker_release.yml | 4 +- deploy/docker/Dockerfile.base | 14 +++---- 3 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/docker_multiarch_build.yaml diff --git a/.github/workflows/docker_multiarch_build.yaml b/.github/workflows/docker_multiarch_build.yaml new file mode 100644 index 00000000..2621100c --- /dev/null +++ b/.github/workflows/docker_multiarch_build.yaml @@ -0,0 +1,42 @@ + +name: ci-docker-multi-arch +on: + push: + tags: + - "v[0-9].[0-9]+.[0-9]+*" + +jobs: + docker: + name: Build base image + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Get Release Tag + run: | + TAG=$(echo $GITHUB_REF | sed 's/refs\/tags\///') + echo "VERSION=$(echo $TAG | sed 's/v//')" >> $GITHUB_ENV + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./deploy/docker + push: true + tags: daxaai/pebblo:${{ env.VERSION }} + platforms: linux/amd64,linux/arm64 + file: ./deploy/docker/Dockerfile.base + build-args: | + "build_image=python:3.11" + "base_image=python:3.11" + "pebblo_branch=${{ env.VERSION }}" \ No newline at end of file diff --git a/.github/workflows/docker_release.yml b/.github/workflows/docker_release.yml index e8734cb1..67a7891b 100644 --- a/.github/workflows/docker_release.yml +++ b/.github/workflows/docker_release.yml @@ -1,9 +1,7 @@ name: Docker image release on: - push: - tags: - - "v[0-9].[0-9]+.[0-9]+*" + workflow_dispatch: jobs: build-and-push: name: Build base image diff --git a/deploy/docker/Dockerfile.base b/deploy/docker/Dockerfile.base index bdea757c..9557570c 100644 --- a/deploy/docker/Dockerfile.base +++ b/deploy/docker/Dockerfile.base @@ -1,8 +1,8 @@ -ARG build_image -ARG base_image -ARG pebblo_version +ARG build_image=python:3.11 +ARG base_image=python:3.11 +ARG pebblo_branch=main -FROM $build_image AS base +FROM --platform=$BUILDPLATFORM $build_image AS base RUN mkdir /opt/pebblo && apt-get update && \ apt-get install -y --no-install-recommends \ @@ -11,12 +11,12 @@ RUN mkdir /opt/pebblo && apt-get update && \ WORKDIR /opt/pebblo -RUN git clone https://github.com/daxa-ai/pebblo.git /opt/pebblo && git checkout $pebblo_version +RUN git clone https://github.com/daxa-ai/pebblo.git /opt/pebblo && git checkout $pebblo_branch -RUN pip install weasyprint && pip install build && python -m build --wheel && pip install dist/*.whl +RUN pip install weasyprint build && python -m build --wheel && pip install dist/*.whl # Stage 2 -FROM $base_image +FROM --platform=$BUILDPLATFORM $base_image RUN mkdir /opt/pebblo /opt/.pebblo /opt/pebblo/log /opt/pebblo/config