FROM golang:alpine AS builder # Install build tools needed for go-sqlite3 (CGO) RUN apk add --no-cache gcc musl-dev WORKDIR /app # Initialize module and get dependencies RUN go mod init calendar-service && \ go get github.com/mattn/go-sqlite3 && \ go get golang.org/x/crypto/bcrypt && \ go get golang.org/x/net/webdav && \ go get github.com/google/uuid COPY main.go . RUN go build -o server main.go # Final Stage FROM alpine:latest # Create non-root user RUN addgroup -g 1000 appuser && \ adduser -D -u 1000 -G appuser appuser WORKDIR /home/appuser COPY --from=builder /app/server . # Create directory for sqlite db RUN mkdir -p data && chown -R appuser:appuser /home/appuser USER appuser EXPOSE 8000 # Run the server CMD ["./server"]