63 lines
1.5 KiB
Docker
63 lines
1.5 KiB
Docker
|
|
# Stage 1: Build
|
||
|
|
FROM golang:1.23-alpine AS builder
|
||
|
|
|
||
|
|
RUN apk add --no-cache git ca-certificates
|
||
|
|
|
||
|
|
WORKDIR /build
|
||
|
|
|
||
|
|
# Copy go modules and download dependencies
|
||
|
|
COPY go.mod go.sum ./
|
||
|
|
RUN go mod download && go mod verify
|
||
|
|
|
||
|
|
# Copy source code and static assets
|
||
|
|
COPY cmd/ cmd/
|
||
|
|
COPY lib/ lib/
|
||
|
|
COPY static/ static/
|
||
|
|
COPY templates/ templates/
|
||
|
|
|
||
|
|
# Build the binary
|
||
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o warpbox ./cmd/main.go
|
||
|
|
|
||
|
|
# Stage 2: Runtime
|
||
|
|
FROM alpine:3.21
|
||
|
|
|
||
|
|
RUN apk add --no-cache ca-certificates tzdata
|
||
|
|
|
||
|
|
# Create non-root user
|
||
|
|
RUN addgroup -S warpbox && adduser -S warpbox -G warpbox
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# Copy binary from builder
|
||
|
|
COPY --from=builder /build/warpbox .
|
||
|
|
|
||
|
|
# Copy static assets
|
||
|
|
COPY --from=builder /build/static/ static/
|
||
|
|
COPY --from=builder /build/templates/ templates/
|
||
|
|
|
||
|
|
# Create data directory
|
||
|
|
RUN mkdir -p /app/data/uploads /app/data/db && chown -R warpbox:warpbox /app/data
|
||
|
|
|
||
|
|
# Switch to non-root user
|
||
|
|
USER warpbox
|
||
|
|
|
||
|
|
# Environment variables
|
||
|
|
ENV WARPBOX_DATA_DIR=/app/data \
|
||
|
|
WARPBOX_GUEST_UPLOADS_ENABLED=true \
|
||
|
|
WARPBOX_API_ENABLED=true \
|
||
|
|
WARPBOX_ZIP_DOWNLOADS_ENABLED=true \
|
||
|
|
WARPBOX_ONE_TIME_DOWNLOADS_ENABLED=true \
|
||
|
|
WARPBOX_ADMIN_ENABLED=true \
|
||
|
|
WARPBOX_GLOBAL_MAX_FILE_SIZE_MB=2048 \
|
||
|
|
WARPBOX_GLOBAL_MAX_BOX_SIZE_MB=4096 \
|
||
|
|
WARPBOX_DEFAULT_GUEST_EXPIRY_SECONDS=3600 \
|
||
|
|
WARPBOX_MAX_GUEST_EXPIRY_SECONDS=172800 \
|
||
|
|
WARPBOX_BOX_POLL_INTERVAL_MS=5000 \
|
||
|
|
WARPBOX_THUMBNAIL_BATCH_SIZE=10 \
|
||
|
|
WARPBOX_THUMBNAIL_INTERVAL_SECONDS=30
|
||
|
|
|
||
|
|
EXPOSE 8080
|
||
|
|
|
||
|
|
VOLUME ["/app/data"]
|
||
|
|
|
||
|
|
CMD ["./warpbox", "run", "--addr", ":8080"]
|