FROM golang:1.21-alpine3.19 AS build_deps # Let scripts know we're running in Docker (useful for containerised development) ENV RUNNING_IN_DOCKER true ENV DEBIAN_FRONTEND=noninteractive ENV TZ="Africa/Johannesburg" ENV WEBROOT=/webroot RUN apk add --no-cache git WORKDIR /workspace COPY go.mod . COPY go.sum . RUN go mod download FROM build_deps AS build COPY . . RUN CGO_ENABLED=0 go build -o webhook -ldflags '-w -extldflags "-static"' . FROM alpine:3.19 RUN apk add --no-cache ca-certificates RUN apk add --no-cache zsh bash bind-tools coreutils krb5 tcpdump COPY ./config/zsh.sh /root/.zshrc COPY ./config/bash.sh /root/.bashrc RUN chown -R root:root /root/.zshrc && \ chown -R root:root /root/.bashrc && \ /bin/zsh /root/.zshrc RUN apk add --no-cache alpine-conf && \ setup-timezone -z Africa/Johannesburg ENV RUNNING_IN_DOCKER true ENV DEBIAN_FRONTEND=noninteractive ENV TZ="Africa/Johannesburg" ENV WEBROOT=/webroot ENV ACMEDIR=/acme ENV WORKDIR=/workdir COPY --from=build /workspace/webhook /usr/local/bin/webhook ENTRYPOINT ["webhook"]