diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 816518b8..54aae4e2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,12 +14,17 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - # Docker - - name: Docker production - run: docker build . + # Set up Docker Buildx for multi-arch support + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + # Build multi-arch image + - name: Build Docker image (multi-arch) + run: | + docker buildx create --use + docker buildx build --platform linux/amd64,linux/arm64 . # Docker development - name: Docker development - run: docker build -f Dockerfile.brain.dev . + run: docker buildx build -f Dockerfile.brain.dev --platform linux/amd64,linux/arm64 . build: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a177dcc..cbf6fafc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,11 +21,17 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + # Set up Docker Buildx for multi-arch support + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Build and push multi-arch Docker image - name: Build and push Staking brain docker monorepo uses: docker/build-push-action@v3 with: file: Dockerfile push: true + platforms: linux/amd64, linux/arm64 tags: ghcr.io/${{ github.repository_owner }}/staking-brain:${{ github.event.inputs.tag }} gh-release: diff --git a/Dockerfile b/Dockerfile index d41133ab..778dc587 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG DOCKER_IMAGE=node:20.17.0-alpine3.20 # Build -FROM ${DOCKER_IMAGE} AS build-stage +FROM --platform=$TARGETPLATFORM ${DOCKER_IMAGE} AS build-stage WORKDIR /app COPY package.json yarn.lock tsconfig.json .yarnrc.yml ./ @@ -19,7 +19,7 @@ RUN yarn install --immutable && \ yarn workspaces focus --all --production # Production -FROM ${DOCKER_IMAGE} +FROM --platform=$TARGETPLATFORM ${DOCKER_IMAGE} ENV NODE_ENV=production WORKDIR /app COPY ./packages/brain/tls ./tls diff --git a/Dockerfile.brain.dev b/Dockerfile.brain.dev index 4545656d..6052ba73 100644 --- a/Dockerfile.brain.dev +++ b/Dockerfile.brain.dev @@ -1,5 +1,5 @@ ARG DOCKER_IMAGE=node:20.17.0-alpine3.20 -FROM ${DOCKER_IMAGE} as build-stage +FROM --platform=$TARGETPLATFORM ${DOCKER_IMAGE} as build-stage ENV NODE_ENV=development WORKDIR /app