Embed full assets directory and serve with via's StaticFS instead of a custom HTTP handler. Move SQLite DB to data/c4.db for clean volume mounting. Add multi-stage Dockerfile, docker-compose.yml, and .dockerignore.
30 lines
657 B
Docker
30 lines
657 B
Docker
FROM golang:1.25.4-bookworm AS build
|
|
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
RUN go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify
|
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /c4 .
|
|
|
|
FROM debian:bookworm-slim
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends ca-certificates wget && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=build /c4 /usr/local/bin/c4
|
|
|
|
WORKDIR /app
|
|
RUN mkdir data && chown games:games data
|
|
|
|
USER games
|
|
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
|
|
CMD wget -qO /dev/null http://localhost:8080/
|
|
|
|
CMD ["c4"]
|