diff --git a/.github/workflows/publish-ghcr.yaml b/.github/workflows/publish-ghcr.yaml index a0fbe03..58fc94d 100644 --- a/.github/workflows/publish-ghcr.yaml +++ b/.github/workflows/publish-ghcr.yaml @@ -31,13 +31,10 @@ jobs: - name: Publish to GHCR uses: docker/build-push-action@v4 with: + context: . + file: ./Dockerfile platforms: linux/amd64,linux/arm/v7,linux/arm64 tags: | ghcr.io/${{ github.repository }}:${{ github.sha }} ghcr.io/${{ github.repository }}:${{ steps.package-version.outputs.current-version }} ghcr.io/${{ github.repository }}:latest - - # - name: Publish to GHCR - # run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - # - run: docker build -t ghcr.io/${{ github.repository }}:latest . - # - run: docker push ghcr.io/${{ github.repository }}:latest \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index ee9f19a..42dfa70 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ -FROM node:20-alpine +# Docker builds hang in arm/v7 images, so we use Node 18 to build and Node 20 to run +# Cf. https://github.com/docker/build-push-action/issues/1071 +FROM node:18-alpine AS BUILD_IMAGE WORKDIR /app RUN apk add --no-cache python3 build-base ADD package.json pnpm-lock.yaml /app/ @@ -8,5 +10,10 @@ COPY . /app/ # Always exit 0 here because TSC will fail while we're migrating to TypeScript but # not everything uses TypeScript RUN pnpm run build; exit 0 + +# Now we run the app +FROM node:20-alpine ENV NODE_ENV=production +WORKDIR /app +COPY --from=BUILD_IMAGE /app/dist /app/dist CMD ["node", "dist/start.js"]