refactor(Docker)!: 💥 Changes Dockerfile to more closely adhere to best practice #4

Merged
florian merged 1 commits from fix/3/dockerfile-best-practice into main 2024-01-12 20:18:37 +01:00
1 changed files with 21 additions and 4 deletions

View File

@ -5,19 +5,36 @@ FROM golang:alpine3.19 AS builder
WORKDIR /app WORKDIR /app
# Copy the source code into the container # Copy the source code into the container
COPY . . COPY go.mod .
COPY go.sum .
# Download required modules
RUN go mod download RUN go mod download
# Copy the main application file
COPY main.go .
# Build the application # Build the application
RUN CGO_ENABLED=0 GOOS=linux go build -o mybot . RUN CGO_ENABLED=0 GOOS=linux go build -o gitea-register-account-bot .
# Use a small base image # Use a small base image
FROM alpine:edge FROM alpine:edge
# Create and set the application directory
WORKDIR /app/ WORKDIR /app/
# Add a non-root user to run the application
RUN addgroup -S nonroot \
&& adduser -S nonroot -G nonroot
# Copy the binary from the builder stage # Copy the binary from the builder stage
COPY --from=builder /app/mybot /app/ COPY --from=builder /app/gitea-register-account-bot /app/
# Change file ownership to the nonroot user
RUN chown -R nonroot:nonroot /app
# Change to nonroot user
USER nonroot
# Command to run the executable # Command to run the executable
CMD ["./mybot"] CMD ["./gitea-register-account-bot"]