Files
zwift-activity-loader/Dockerfile
Thomas Klaehn f496eebe2a Initial commit
Signed-off-by: Thomas Klaehn <thomas.klaehn@perinet.io>
2026-02-10 13:27:42 +01:00

52 lines
1.1 KiB
Docker

# Build stage
FROM golang:1.25-alpine AS builder
WORKDIR /app
# Install build dependencies
RUN apk add --no-cache git ca-certificates tzdata
# Copy go mod files
COPY go.mod go.sum ./
RUN go mod download
# Copy source code
COPY . .
# Build the binary
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o zwift-monitor .
# Final stage
FROM alpine:latest
# Install runtime dependencies
RUN apk --no-cache add ca-certificates tzdata
WORKDIR /app
# Copy binary from builder
COPY --from=builder /app/zwift-monitor .
# Create data directory
RUN mkdir -p /data/activities
# Run as non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
RUN chown -R appuser:appgroup /app /data
USER appuser
# Set default environment variables
ENV ZWIFT_OUTPUT_DIR=/data/activities \
ZWIFT_STATE_FILE=/data/zwift-state.json \
ZWIFT_TOKEN_CACHE=/data/.zwift-token.json \
ZWIFT_POLL_INTERVAL=5m \
ZWIFT_LOG_LEVEL=info \
ZWIFT_RATE_LIMIT=5 \
ZWIFT_MAX_RETRIES=3
# Expose volume for data
VOLUME ["/data"]
# Run the service
CMD ["/app/zwift-monitor"]