diff --git a/Dockerfile b/Dockerfile index 7f32a85..f326641 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,29 @@ -FROM golang:1.22 +# Stage 1: Build Binary +FROM golang:1.22 AS builder WORKDIR /app + +# Download Dependencies COPY go.mod go.sum ./ -RUN go mod download +RUN --mount=type=cache,target=/root/.cache/go-build \ + go mod download + +# Setup and Build COPY . ./ -RUN CGO_ENABLED=0 GOOS=linux go build -o /snow +RUN --mount=type=bind \ + CGO_ENABLED=0 GOOS=linux go build -o /snow + +# Stage 2: Deploy Binary +FROM busybox:1.36-glibc as busybox +FROM gcr.io/distroless/base AS deploy +WORKDIR /app + +# Copy binaries from Busybox +COPY --from=busybox /bin /bin + +# Setup user +RUN adduser -D -h /app snow +RUN chown snow /app +COPY --from=builder --chown=snow --chmod=700 /snow /app/snow + EXPOSE 3000 -CMD ["/snow"] +ENTRYPOINT ["/app/snow"] \ No newline at end of file