ContainerImage.Pinniped/Dockerfile

49 lines
1.5 KiB
Docker
Raw Normal View History

2020-07-06 23:54:04 +00:00
FROM golang:1.14-alpine as build-env
# It is important that these ARG's are defined after the FROM statement
ARG ACCESS_TOKEN_USR="nothing"
ARG ACCESS_TOKEN_PWD="nothing"
# git is required to fetch go dependencies
RUN apk add --no-cache ca-certificates git bash
# Create a netrc file using the credentials specified using --build-arg
RUN printf "machine github.com\n\
login ${ACCESS_TOKEN_USR}\n\
password ${ACCESS_TOKEN_PWD}\n\
\n\
machine api.github.com\n\
login ${ACCESS_TOKEN_USR}\n\
password ${ACCESS_TOKEN_PWD}\n"\
>> /root/.netrc
RUN chmod 600 /root/.netrc
2020-07-06 23:54:04 +00:00
RUN mkdir /work
RUN mkdir /work/out
WORKDIR /work
# Get dependencies first so they can be cached as a layer
COPY go.mod .
COPY go.sum .
COPY pkg/client/go.mod ./pkg/client/go.mod
COPY pkg/client/go.sum ./pkg/client/go.sum
2020-07-06 23:54:04 +00:00
RUN go mod download
# Copy only the production source code to avoid cache misses when editing other files
COPY cmd ./cmd
COPY internal ./internal
COPY pkg ./pkg
COPY tools ./tools
COPY hack ./hack
2020-07-06 23:54:04 +00:00
# Build the executable binary
RUN GOOS=linux GOARCH=amd64 go build -ldflags "$(hack/get-ldflags.sh)" -o out ./cmd/placeholder-name-server/...
2020-07-06 23:54:04 +00:00
FROM alpine:latest
# Install CA certs and some tools for debugging
RUN apk --update --no-cache add ca-certificates bash curl
WORKDIR /root/
# Copy the binary from the build-env stage
COPY --from=build-env /work/out/placeholder-name-server placeholder-name-server
2020-07-06 23:54:04 +00:00
# Document the port
EXPOSE 443
2020-07-06 23:54:04 +00:00
# Set the command
CMD ["./placeholder-name-server"]