From ac50101153f027b6bb184919fb10173b69146233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Sarok?= Date: Sat, 14 Dec 2024 10:03:45 +0100 Subject: [PATCH] fix: reduced docker image size --- Dockerfile | 27 ++++++++++++++++----------- main.go | 1 + 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9fd03eb..0d39b5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,24 +1,29 @@ -#base image -FROM golang:1.22 +# Use the official Golang image to build the application +FROM golang:1.22 AS builder -#create work directory +# Set the Current Working Directory inside the container WORKDIR /app -#in order to download modules, we need go.mod and go.sum in the work directory +# Copy go.mod and go.sum files COPY go.mod go.sum ./ -#download modules +# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed RUN go mod download -#copy source code -COPY ./ ./ +# Copy the source from the current directory to the Working Directory inside the container +COPY . . -#WORKDIR /r2-api-go - -#compile +# Build the Go app RUN CGO_ENABLED=0 GOOS=linux go build -o /r2-api-go +# Start a new stage from scratch +FROM alpine:latest + +# Copy the Pre-built binary file from the previous stage +COPY --from=builder /r2-api-go /r2-api-go + +# Expose port 8080 to the outside world EXPOSE 8080 -#what command to run, when container is started from this image +# Command to run the executable CMD ["/r2-api-go"] \ No newline at end of file diff --git a/main.go b/main.go index 7c6888d..8e08ec6 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ func main() { config.Init() r := gin.Default() + r.Use(gin.Logger()) config := cors.DefaultConfig() config.AllowAllOrigins = true //TODO: config, do not allow all config.AllowMethods = []string{"POST", "GET", "PUT", "OPTIONS"}