1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- FROM golang:1.24.2-alpine AS builder
- WORKDIR /app
- # Install necessary build tools and SQLite dependencies
- RUN apk add --no-cache git make build-base sqlite-dev
- # Copy go mod files first for better caching
- COPY go.mod go.sum ./
- # Download dependencies
- RUN go mod download
- # Copy the rest of the source code
- COPY . .
- # Build the application with SQLite support
- RUN go build -tags 'sqlite' -o byop-engine .
- # Create a minimal production image
- FROM alpine:3.17
- WORKDIR /app
- # Install runtime dependencies including SQLite
- RUN apk add --no-cache ca-certificates tzdata sqlite
- # Create data directory for SQLite
- RUN mkdir -p /app/data && chmod 755 /app/data
- # Copy the binary from the builder stage
- COPY --from=builder /app/byop-engine /app/byop-engine
- COPY --from=builder /app/config.sample.yml /app/config.yaml
- # Create a non-root user and switch to it
- RUN adduser -D -u 1000 byopuser && \
- chown -R byopuser:byopuser /app
- USER byopuser
- # Expose the application port
- EXPOSE 8080
- # Run the application
- CMD ["/app/byop-engine"]
|