new-codigoparallevar/scripts/search-server/Dockerfile
2022-10-03 00:52:11 +02:00

48 lines
1018 B
Docker

FROM golang:1.19-alpine as builder
# Install build dependencies
RUN apk add alpine-sdk
# Create appuser.
ENV USER=appuser
ENV UID=10001
# See https://stackoverflow.com/a/55757473/12429735
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
"${USER}"
# Prepare dependencies
RUN mkdir /build
ADD go.mod go.sum /build/
WORKDIR /build
RUN go mod download
RUN go mod verify
# Prepare app
ADD server.go /build/
# Build as static binary
RUN CGO_ENABLED=1 go build --tags "fts5" -ldflags='-w -s -extldflags "-static"' -o /build/search-server
# Copy binary to empty image
FROM scratch
# Import the user and group files from the builder.
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder /etc/group /etc/group
# Prepare environment
ENV GIN_MODE=release
# Copy executable
COPY --from=builder /build/search-server /server
# Use an unprivileged user.
USER appuser:appuser
ENTRYPOINT ["/server"]