snow/Dockerfile
2024-05-29 00:08:16 -07:00

33 lines
648 B
Docker

# Stage 1: Build Binary
FROM golang:1.22 AS builder
WORKDIR /app
# Download Dependencies
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/root/.cache/go-build \
go mod download
# Setup and Build
COPY . ./
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 --from=busybox /bin /bin
RUN mkdir /app/data
# Copy snow binary and configuration files
COPY --from=builder /snow /app/snow
# Setup user
RUN adduser -D -h /app snow && \
chown -R snow:snow /app
USER snow
EXPOSE 3000
ENTRYPOINT ["/app/snow"]