fork of indigo with slightly nicer lexgen

dockerize

Changed files
+95
.github
cmd
rainbow
+52
.github/workflows/container-rainbow-aws.yaml
··· 1 + name: container-rainbow-aws 2 + on: [push] 3 + env: 4 + REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }} 5 + USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }} 6 + PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }} 7 + # github.repository as <account>/<repo> 8 + IMAGE_NAME: rainbow 9 + 10 + jobs: 11 + container-rainbow-aws: 12 + if: github.repository == 'bluesky-social/indigo' 13 + runs-on: ubuntu-latest 14 + permissions: 15 + contents: read 16 + packages: write 17 + id-token: write 18 + 19 + steps: 20 + - name: Checkout repository 21 + uses: actions/checkout@v3 22 + 23 + - name: Setup Docker buildx 24 + uses: docker/setup-buildx-action@v1 25 + 26 + - name: Log into registry ${{ env.REGISTRY }} 27 + uses: docker/login-action@v2 28 + with: 29 + registry: ${{ env.REGISTRY }} 30 + username: ${{ env.USERNAME }} 31 + password: ${{ env.PASSWORD }} 32 + 33 + - name: Extract Docker metadata 34 + id: meta 35 + uses: docker/metadata-action@v4 36 + with: 37 + images: | 38 + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} 39 + tags: | 40 + type=sha,enable=true,priority=100,prefix=,suffix=,format=long 41 + 42 + - name: Build and push Docker image 43 + id: build-and-push 44 + uses: docker/build-push-action@v4 45 + with: 46 + context: . 47 + file: ./cmd/rainbow/Dockerfile 48 + push: ${{ github.event_name != 'pull_request' }} 49 + tags: ${{ steps.meta.outputs.tags }} 50 + labels: ${{ steps.meta.outputs.labels }} 51 + cache-from: type=gha 52 + cache-to: type=gha,mode=max
+43
cmd/rainbow/Dockerfile
··· 1 + FROM golang:1.22-bullseye AS build-env 2 + 3 + ENV DEBIAN_FRONTEND=noninteractive 4 + ENV TZ=Etc/UTC 5 + ENV GODEBUG="netdns=go" 6 + ENV GOOS="linux" 7 + ENV GOARCH="amd64" 8 + ENV CGO_ENABLED="1" 9 + 10 + WORKDIR /usr/src/rainbow 11 + 12 + COPY . . 13 + 14 + RUN go mod download && \ 15 + go mod verify 16 + 17 + RUN go build \ 18 + -v \ 19 + -trimpath \ 20 + -tags timetzdata \ 21 + -o /rainbow-bin \ 22 + ./cmd/rainbow 23 + 24 + FROM debian:bullseye-slim 25 + 26 + ENV DEBIAN_FRONTEND="noninteractive" 27 + ENV TZ=Etc/UTC 28 + ENV GODEBUG="netdns=go" 29 + 30 + RUN apt-get update && apt-get install --yes \ 31 + dumb-init \ 32 + ca-certificates \ 33 + runit 34 + 35 + WORKDIR /rainbow 36 + COPY --from=build-env /rainbow-bin /usr/bin/rainbow 37 + 38 + ENTRYPOINT ["/usr/bin/dumb-init", "--"] 39 + CMD ["/usr/bin/rainbow"] 40 + 41 + LABEL org.opencontainers.image.source=https://github.com/bluesky-social/indigo 42 + LABEL org.opencontainers.image.description="bsky.app rainbow" 43 + LABEL org.opencontainers.image.licenses=MIT