diff --git a/Dockerfile b/Dockerfile index 60a31a2..61cfa91 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,33 +3,30 @@ FROM golang:1.25-alpine AS builder WORKDIR /app +# Install Node.js, npm, and curl for Tailwind CSS building +RUN apk add --no-cache nodejs npm curl + # Install sqlc RUN go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest # Install templ RUN go install github.com/a-h/templ/cmd/templ@latest +# Copy package files and install npm dependencies +COPY package*.json ./ +RUN npm install + # Copy source code COPY . . # Download dependencies RUN go mod tidy -# Install Node.js and npm for Tailwind CSS building -RUN apk add --no-cache nodejs npm - -# Copy package files and install npm dependencies -COPY package*.json ./ -RUN npm install - -# Copy source code (after npm to avoid re-running npm install on code changes) -COPY . . - # Generate sqlc code -RUN sqlc generate +RUN cd internal/database && sqlc generate # Generate templ code -RUN templ generate +RUN cd templates && templ generate # Build Tailwind CSS and download htmx RUN npm run build:css:prod @@ -41,7 +38,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/server # Final stage FROM alpine:latest -RUN apk --no-cache add ca-certificates +RUN apk --no-cache add ca-certificates curl WORKDIR /root/ # Copy the binary from builder stage @@ -50,9 +47,12 @@ COPY --from=builder /app/main . # Copy database schema (if needed for initialization) COPY --from=builder /app/database/schema ./database/schema -# Copy templates +# Copy generated templates COPY --from=builder /app/templates ./templates +# Copy static assets +COPY --from=builder /app/cmd/server/static ./static + # Expose port EXPOSE 8765