api/Dockerfile

46 lines
877 B
Text
Raw Normal View History

FROM golang:1.14-buster as build
# Create appuser.
ARG USER=inetmock
ARG USER_ID=10001
ENV CGO_ENABLED=0
# Prepare build stage - can be cached
WORKDIR /work
RUN apt-get update && \
apt-get install -y --no-install-recommends make gcc && \
adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${USER_ID}" \
"${USER}"
# Fetch dependencies
COPY Makefile go.mod go.sum ./
RUN go mod download
COPY ./ ./
# Build binary and plugins
RUN make CONTAINER=yes
# Runtime layer
FROM scratch
ENV INETMOCK_PLUGINS_DIRECTORY=/app/plugins/
WORKDIR /app
COPY --from=build /etc/passwd /etc/group /etc/
COPY --from=build --chown=$USER /work/inetmock ./
COPY --from=build --chown=$USER /work/*.so ./plugins/
USER $USER:$USER
ENTRYPOINT ["/app/inetmock"]