2020-04-01 02:08:21 +00:00
|
|
|
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
|
|
|
|
|
2020-04-01 22:58:44 +00:00
|
|
|
ENV INETMOCK_PLUGINS_DIRECTORY=/app/plugins/
|
|
|
|
|
2020-04-01 02:08:21 +00:00
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
COPY --from=build /etc/passwd /etc/group /etc/
|
|
|
|
COPY --from=build --chown=$USER /work/inetmock ./
|
2020-04-25 22:22:45 +00:00
|
|
|
COPY --from=build --chown=$USER /work/*.so ./plugins/
|
2020-04-01 02:08:21 +00:00
|
|
|
|
|
|
|
USER $USER:$USER
|
|
|
|
|
2020-04-25 22:22:45 +00:00
|
|
|
ENTRYPOINT ["/app/inetmock"]
|