Skip to content

Commit

Permalink
Merge pull request #25 from protoconf/avivl/docker
Browse files Browse the repository at this point in the history
Add Dockerfile for demoapp with multi-stage build
  • Loading branch information
avivl authored Jun 25, 2024
2 parents 78bf529 + 9cb2804 commit 370e6af
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions demoapp/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

FROM golang:1.22.4-alpine as builder
# Set the Current Working Directory inside the container
WORKDIR /go/src/protoconf/demoapp

# Copy go mod and sum files
COPY go.mod go.sum ./

# Download all dependencies. Dependencies will be cached if the go.mod and 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 go build -o /go/bin/main . &&\
adduser -D -u 10001 demo
# Start a new stage from scratch
FROM scratch AS runtime

# Set the Current Working Directory inside the container
WORKDIR /root/

COPY --from=builder /etc/passwd /etc/passwd

USER 1001
# Copy the Pre-built binary file from the previous stage
COPY --from=builder /go/bin/main .

COPY --from=builder /go/src/protoconf/demoapp/local/config.json /root/local/config.json

# Expose port 8181 to the outside world
EXPOSE 8181

# Command to run the executable
CMD ["./main"]

0 comments on commit 370e6af

Please sign in to comment.