FROM node:22-alpine AS frontend-builder WORKDIR /src/frontend COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build FROM golang:1.25.5-alpine AS backend-builder WORKDIR /src/backend COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ ./ COPY --from=frontend-builder /src/frontend/dist ./dist RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o timetracker . FROM alpine:latest RUN apk --no-cache add ca-certificates tzdata WORKDIR /app COPY --from=backend-builder /src/backend/timetracker . VOLUME ["/data"] ENV PORT=8080 ENV DB_PATH=/data/timetracking.db EXPOSE 8080 CMD ["./timetracker"]