feat: update Dockerfile and docker-compose to work with new svelte frontend
This commit is contained in:
parent
e719f4565f
commit
59b37dc995
2 changed files with 21 additions and 43 deletions
45
Dockerfile
45
Dockerfile
|
|
@ -1,51 +1,34 @@
|
|||
# Build stage for Elm frontend
|
||||
FROM node:25-alpine AS elm-build
|
||||
FROM node:22-alpine AS frontend-builder
|
||||
|
||||
WORKDIR /frontend
|
||||
WORKDIR /src/frontend
|
||||
|
||||
# Install Elm
|
||||
RUN npm install -g elm@latest-0.19.1
|
||||
COPY frontend/package.json frontend/package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
# Copy Elm files
|
||||
COPY frontend/elm.json .
|
||||
COPY frontend/src ./src
|
||||
COPY frontend/ ./
|
||||
RUN npm run build
|
||||
|
||||
# Build Elm app
|
||||
RUN elm make src/Main.elm --optimize --output=elm.js
|
||||
FROM golang:1.25.5-alpine AS backend-builder
|
||||
|
||||
# Build stage for Go backend
|
||||
FROM golang:1.25.3-alpine AS go-build
|
||||
WORKDIR /src/backend
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy go mod files
|
||||
COPY backend/go.mod backend/go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
# Copy backend source
|
||||
COPY backend/ ./
|
||||
|
||||
# Build Go binary
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
|
||||
COPY --from=frontend-builder /src/frontend/dist ./dist
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o timetracker .
|
||||
|
||||
# Final stage
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk --no-cache add ca-certificates tzdata
|
||||
|
||||
WORKDIR /root/
|
||||
WORKDIR /app
|
||||
|
||||
# Copy Go binary from build stage
|
||||
COPY --from=go-build /app/main .
|
||||
COPY --from=backend-builder /src/backend/timetracker .
|
||||
|
||||
# Create static directory
|
||||
RUN mkdir -p /root/static
|
||||
|
||||
# Copy Elm build artifacts
|
||||
COPY --from=elm-build /frontend/elm.js /root/static/
|
||||
COPY frontend/public/index.html /root/static/
|
||||
|
||||
# Create volume for database
|
||||
VOLUME ["/data"]
|
||||
|
||||
ENV PORT=8080
|
||||
|
|
@ -53,4 +36,4 @@ ENV DB_PATH=/data/timetracking.db
|
|||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["./main"]
|
||||
CMD ["./timetracker"]
|
||||
|
|
|
|||
|
|
@ -2,23 +2,18 @@ services:
|
|||
timetracking:
|
||||
build: .
|
||||
container_name: school-timetracking
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- PORT=8080
|
||||
- ENVIRONMENT=production
|
||||
- DB_PATH=/data/timetracking.db
|
||||
- JWT_SECRET=your-default-secret-change-me
|
||||
- TZ=Europe/Berlin # Optional: Zeitzone
|
||||
- JWT_SECRET=change-me-to-something-secure-and-long
|
||||
- TZ=Europe/Berlin
|
||||
- CORS_ALLOWED_ORIGINS=http://localhost:8080
|
||||
volumes:
|
||||
- timetracking-data:/data
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- timetracking-net
|
||||
- timetracking_data:/data
|
||||
|
||||
volumes:
|
||||
timetracking-data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
timetracking-net:
|
||||
driver: bridge
|
||||
timetracking_data:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue