Skip to content

Commit

Permalink
Automatically build and push multiarch docker images on Release (#697)
Browse files Browse the repository at this point in the history
* Update dockerfile to support multi-arch

* GHA release docker

* Pin docker action versions and remove permissions

* Update release-docker-images.yml

Use rwynn/monstache instead of my copy :)

* Pin docker buildx and buildkit versions
  • Loading branch information
adoy authored Sep 20, 2023
1 parent 76b7197 commit e899d54
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 24 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/release-docker-images.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Monstache release docker images

on:
release:
types: [created]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@818d4b7b91585d195f67373fd9cb0332e31a7175
with:
# list of Docker images to use as base name for tags
images: |
rwynn/monstache
# generate Docker tags based on the following events/attributes
tags: |
type=raw,value=rel6
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
- name: Set up QEMU
uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@885d1462b80bc1c1c7f0b00334ad271f09369c55
with:
version: v0.11.2
driver-opts: image=moby/buildkit:v0.12.2
- name: Login to Docker Hub
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@0a97817b6ade9f46837855d676c4cca3a2471fc9
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
36 changes: 12 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,13 @@
####################################################################################################
# Step 1: Build the app
####################################################################################################

FROM rwynn/monstache-builder-cache-rel6:1.0.8 AS build-app

RUN mkdir /app

WORKDIR /app

COPY . .

RUN go mod download

RUN make release

####################################################################################################
# Step 2: Copy output build file to an alpine image
####################################################################################################

FROM rwynn/monstache-alpine:3.17.3

FROM --platform=$BUILDPLATFORM golang:1.20.4-alpine3.17 AS build
WORKDIR /src
ARG TARGETOS TARGETARCH
RUN --mount=target=. \
--mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/go/pkg \
go mod download; \
GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /out/monstache .

FROM alpine:3.17
RUN apk --no-cache add ca-certificates
ENTRYPOINT ["/bin/monstache"]

COPY --from=build-app /app/build/linux-amd64/monstache /bin/monstache
COPY --from=build /out/monstache /bin

0 comments on commit e899d54

Please sign in to comment.