FROM golang:1.21.3-alpine3.18 AS build
WORKDIR /app
RUN rm /etc/passwd \
 && touch /etc/passwd /etc/group \
 && adduser --disabled-password --shell /sbin/nologin --no-create-home --uid 1000 nonroot
ENV GOPATH=/app/.go
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath -o cottonbackalley ./cmd/cottonbackalley.go
RUN rm -rf /srv/cottonalley && mkdir -p /srv/cottonalley
RUN rm -rf /tmp && mkdir -p /tmp

FROM scratch
COPY --from=build /etc/passwd /etc/passwd
COPY --from=build --chown=nonroot /app/cottonbackalley /app/cottonbackalley
COPY --from=build --chown=nonroot /srv/cottonalley /srv/cottonalley
COPY --from=build --chown=nonroot /tmp /tmp
USER nonroot
ENTRYPOINT ["/app/cottonbackalley"]
