36 lines
564 B
Docker
36 lines
564 B
Docker
# Builder stage
|
|
FROM golang:1.23-bookworm AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
# Build native for the host architecture (ARM64 on Hetzner)
|
|
RUN CGO_ENABLED=1 go build -o fitness-app ./main.go
|
|
|
|
|
|
|
|
# Runtime stage
|
|
FROM debian:bookworm-slim
|
|
|
|
RUN useradd -m appuser
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/fitness-app /app/fitness-app
|
|
|
|
# External data dir for sqlite db
|
|
RUN mkdir -p /data && chown -R appuser:appuser /data
|
|
|
|
ENV DATABASE_URL=/data/fitness.db
|
|
|
|
USER appuser
|
|
|
|
EXPOSE 8080
|
|
VOLUME ["/data"]
|
|
|
|
CMD ["/app/fitness-app"]
|