diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index b5424b367..f63920703 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -30,6 +30,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 + id: qemu - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub @@ -52,6 +53,7 @@ jobs: with: context: . push: true + platforms: "linux/amd64,linux/arm64/v8" file: ${{ env.DOCKERFILE }} tags: ${{ env.TAGS }} - name: Wait for Docker Hub to propagate @@ -62,6 +64,7 @@ jobs: with: context: . push: true + platforms: "linux/amd64,linux/arm64/v8" file: ./docker/build_and_push_backend.Dockerfile build-args: | LANGFLOW_IMAGE=langflowai/langflow:${{ inputs.version }} @@ -75,6 +78,7 @@ jobs: context: . push: true file: ./docker/frontend/build_and_push_frontend.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow-frontend:${{ inputs.version }} langflowai/langflow-frontend:1.0-alpha diff --git a/.github/workflows/docker_test.yml b/.github/workflows/docker_test.yml index f46010358..9be7beb00 100644 --- a/.github/workflows/docker_test.yml +++ b/.github/workflows/docker_test.yml @@ -8,6 +8,7 @@ on: - "poetry.lock" - "pyproject.toml" - "src/backend/**" + - ".github/workflows/docker_test.yml" pull_request: branches: [dev] paths: @@ -15,12 +16,13 @@ on: - "poetry.lock" - "pyproject.toml" - "src/**" + - ".github/workflows/docker_test.yml" env: POETRY_VERSION: "1.8.2" jobs: - build: + test-docker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -59,3 +61,20 @@ jobs: docker build -t langflowai/langflow-frontend:latest-dev \ -f docker/frontend/build_and_push_frontend.Dockerfile \ . + test-multi-arch-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + id: qemu + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: false + file: ./docker/build_and_push.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" + tags: langflowai/langflow:latest-dev diff --git a/.github/workflows/pre-release-base.yml b/.github/workflows/pre-release-base.yml index 6045038be..6f1e4fe8e 100644 --- a/.github/workflows/pre-release-base.yml +++ b/.github/workflows/pre-release-base.yml @@ -60,6 +60,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 + id: qemu - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub @@ -73,5 +74,6 @@ jobs: context: . push: true file: ./docker/build_and_push_base.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow:base-${{ needs.release.outputs.version }} diff --git a/.github/workflows/pre-release-langflow.yml b/.github/workflows/pre-release-langflow.yml index f3909f7b1..79c1d6af5 100644 --- a/.github/workflows/pre-release-langflow.yml +++ b/.github/workflows/pre-release-langflow.yml @@ -66,6 +66,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 + id: qemu - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub @@ -79,6 +80,7 @@ jobs: context: . push: true file: ./docker/build_and_push.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow:${{ needs.release.outputs.version }} langflowai/langflow:1.0-alpha @@ -88,6 +90,7 @@ jobs: context: . push: true file: ./docker/frontend/build_and_push_frontend.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow-frontend:${{ needs.release.outputs.version }} langflowai/langflow-frontend:1.0-alpha @@ -99,6 +102,7 @@ jobs: context: . push: true file: ./docker/build_and_push_backend.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" build-args: | LANGFLOW_IMAGE=langflowai/langflow:${{ needs.release.outputs.version }} tags: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 851f06424..364289b90 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,6 +38,7 @@ jobs: poetry publish - name: Set up QEMU uses: docker/setup-qemu-action@v3 + id: qemu - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub @@ -51,6 +52,7 @@ jobs: context: . push: true file: ./docker/build_and_push.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow:${{ steps.check-version.outputs.version }} langflowai/langflow:latest @@ -62,6 +64,7 @@ jobs: context: . push: true file: ./docker/build_and_push_backend.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" build-args: | LANGFLOW_IMAGE=langflowai/langflow:${{ steps.check-version.outputs.version }} tags: | @@ -73,6 +76,7 @@ jobs: context: . push: true file: ./docker/frontend/build_and_push_frontend.Dockerfile + platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow-frontend:${{ steps.check-version.outputs.version }} langflowai/langflow-frontend:latest diff --git a/docker/build_and_push.Dockerfile b/docker/build_and_push.Dockerfile index e93477d2a..43d9a0272 100644 --- a/docker/build_and_push.Dockerfile +++ b/docker/build_and_push.Dockerfile @@ -6,7 +6,9 @@ # BUILDER-BASE # Used to build deps + create our virtual environment ################################ -FROM python:3.12-slim as builder-base + +# force platform to the current architecture to increase build speed time on multi-platform builds +FROM --platform=$BUILDPLATFORM python:3.12-slim as builder-base ENV PYTHONDONTWRITEBYTECODE=1 \ \ diff --git a/docker/frontend/build_and_push_frontend.Dockerfile b/docker/frontend/build_and_push_frontend.Dockerfile index e954a801e..46c5ffdeb 100644 --- a/docker/frontend/build_and_push_frontend.Dockerfile +++ b/docker/frontend/build_and_push_frontend.Dockerfile @@ -4,7 +4,9 @@ ################################ # BUILDER-BASE ################################ -FROM node:lts-bookworm-slim as builder-base + +# force platform to the current architecture to increase build speed time on multi-platform builds +FROM --platform=$BUILDPLATFORM node:lts-bookworm-slim as builder-base COPY src/frontend /frontend RUN cd /frontend && npm install && npm run build