diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3607f1f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +Dockerfile +.github +.vscode +README.md +LICENSE \ No newline at end of file diff --git a/.github/workflows/publish-showbridge-image.yaml b/.github/workflows/publish-showbridge-image.yaml new file mode 100644 index 0000000..322f0d3 --- /dev/null +++ b/.github/workflows/publish-showbridge-image.yaml @@ -0,0 +1,46 @@ +name: Publish showbridge docker image +on: + push: + branches: + - 'main' + tags: + - 'v**' +jobs: + build-cli-docker: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + + - name: Set up QEMU + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 + + - name: Login to Docker Hub + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Setup Docker metadata + id: meta + uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0 + with: + images: | + jwetzell/showbridge + tags: | + type=ref,event=branch + type=semver,pattern={{version}} + + - name: Build and push + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + with: + push: true + context: ./ + file: ./Dockerfile + tags: jwetzell/showbridge:main + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64,linux/arm/v7 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1e855a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +ARG GO_VERSION=1.25.5 +FROM golang:${GO_VERSION}-alpine AS build +RUN apk --no-cache add ca-certificates tzdata +WORKDIR /build +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux go build ./cmd/showbridge + +FROM scratch +WORKDIR /app +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo +COPY --from=build /build/showbridge /app/showbridge +ENTRYPOINT [ "/app/showbridge" ] \ No newline at end of file