Created
September 7, 2019 16:07
-
-
Save victorsteven/07525e9c037c7940c540ab90fff15ea0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Start from golang base image | |
FROM golang:alpine as builder | |
# ENV GO111MODULE=on | |
# Add Maintainer info | |
LABEL maintainer="Steven Victor <chikodi543@gmail.com>" | |
# Install git. | |
# Git is required for fetching the dependencies. | |
RUN apk update && apk add --no-cache git | |
# Set the current working directory inside the container | |
WORKDIR /app | |
# Copy go mod and sum files | |
COPY go.mod go.sum ./ | |
# Download all dependencies. Dependencies will be cached if the go.mod and the go.sum files are not changed | |
RUN go mod download | |
# Copy the source from the current directory to the working Directory inside the container | |
COPY . . | |
# Build the Go app | |
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . | |
# Start a new stage from scratch | |
FROM alpine:latest | |
RUN apk --no-cache add ca-certificates | |
WORKDIR /root/ | |
# Copy the Pre-built binary file from the previous stage. Observe we also copied the .env file | |
COPY --from=builder /app/main . | |
COPY --from=builder /app/.env . | |
# Expose port 8080 to the outside world | |
EXPOSE 8080 | |
#Command to run the executable | |
CMD ["./main"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment