diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index e01b804..8ca1645 100644 --- a/.github/workflows/docker-publish.yaml +++ b/.github/workflows/docker-publish.yaml @@ -11,7 +11,7 @@ env: jobs: build-and-push-docker-image: - runs-on: ubuntu-25.10 + runs-on: ubuntu-24.04 permissions: contents: read packages: write # Required to push images to GHCR @@ -20,6 +20,12 @@ jobs: - name: Checkout repository 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: Fetch external versions and build date id: vars shell: bash @@ -43,18 +49,20 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=sha + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} + type=raw,value=${{ steps.vars.outputs.date }}-schema-${{ steps.vars.outputs.schema }}-extractor-${{ steps.vars.outputs.extractor }} + type=ref,event=branch,enable=${{ github.ref != format('refs/heads/{0}', github.event.repository.default_branch) }} labels: | org.opencontainers.image.created=${{ steps.vars.outputs.date }} biosim.schema.version=${{ steps.vars.outputs.schema }} biosim.extractor.version=${{ steps.vars.outputs.extractor }} - name: Build and push Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./docker/Dockerfile + platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/docker/Dockerfile b/docker/Dockerfile index 7ad3b0c..b0805c3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Fetch Schema Artifacts -FROM ubuntu:25.10 AS schema-fetcher +FROM ubuntu:24.04 AS schema-fetcher RUN apt-get update && apt-get install -y --no-install-recommends curl jq tar ca-certificates \ && rm -rf /var/lib/apt/lists/* \ @@ -15,7 +15,7 @@ RUN TAG=$(curl -fsSL https://api.github.com/repos/CCPBioSim/biosim-schema/releas # Stage 2: Build Python dependencies -FROM ubuntu:25.10 AS builder +FROM ubuntu:24.04 AS builder ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ @@ -47,7 +47,7 @@ RUN pip install --upgrade pip setuptools && \ # Stage 3: Runtime -FROM ubuntu:25.10 +FROM ubuntu:24.04 ARG PORT=5002 @@ -56,7 +56,7 @@ ENV DEBIAN_FRONTEND=noninteractive \ PYTHONUNBUFFERED=1 RUN apt-get update && apt-get install -y --no-install-recommends \ - python3-minimal \ + python3 \ libgomp1 \ ca-certificates \ && rm -rf /var/lib/apt/lists/* @@ -70,6 +70,7 @@ RUN groupadd -g 10001 biosim && \ biosim WORKDIR /app +RUN chown biosim:biosim /app # Copy the pre-built virtual environment from the builder stage COPY --from=builder --chown=biosim:biosim /venv /venv