parthib07 commited on
Commit
3df1e8d
Β·
verified Β·
1 Parent(s): 7a65bd1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +9 -16
Dockerfile CHANGED
@@ -1,31 +1,27 @@
1
  # ─────────────────────────────────────────────
2
- # Stage 1 β€” Build the React frontend
3
  # ─────────────────────────────────────────────
4
  FROM node:20-alpine AS frontend-builder
5
 
6
  WORKDIR /app/frontend
7
 
8
- # Install dependencies (cache-friendly)
9
  COPY frontend/package*.json ./
10
  RUN npm ci
11
 
12
- # Copy source and build
13
  COPY frontend/ ./
14
  RUN npm run build
15
 
16
 
17
  # ─────────────────────────────────────────────
18
- # Stage 2 β€” Build the Go backend
19
  # ─────────────────────────────────────────────
20
  FROM golang:1.21-alpine AS backend-builder
21
 
22
  WORKDIR /app/backend
23
 
24
- # Cache Go modules
25
  COPY backend/go.mod backend/go.sum ./
26
  RUN go mod download
27
 
28
- # Copy source and build binary
29
  COPY backend/ ./
30
  RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /portfolio-api ./cmd/main.go
31
 
@@ -41,30 +37,27 @@ RUN apk add --no-cache supervisor
41
  # βœ… Create non-root user (UID 1000 for HF Spaces)
42
  RUN adduser -D -u 1000 appuser
43
 
44
- # Copy frontend build
45
  COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html
46
 
47
- # Copy Go binary
48
  COPY --from=backend-builder /portfolio-api /app/portfolio-api
49
 
50
  # Copy configs
51
  COPY nginx.conf /etc/nginx/nginx.conf
52
  COPY supervisord.conf /etc/supervisord.conf
53
 
54
- # βœ… Fix permissions for non-root user
55
- RUN chown -R appuser:appuser /usr/share/nginx/html \
 
 
56
  && chown -R appuser:appuser /var/cache/nginx \
57
  && chown -R appuser:appuser /var/log/nginx \
58
- && chown -R appuser:appuser /etc/nginx \
59
- && mkdir -p /var/run \
60
- && touch /var/run/nginx.pid \
61
- && chown -R appuser:appuser /var/run \
62
  && chmod +x /app/portfolio-api
63
 
64
- # βœ… Switch to non-root user
65
  USER appuser
66
 
67
- # HF Spaces uses port 7860
68
  EXPOSE 7860
69
 
70
  CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
 
1
  # ─────────────────────────────────────────────
2
+ # Stage 1 β€” Build React frontend
3
  # ─────────────────────────────────────────────
4
  FROM node:20-alpine AS frontend-builder
5
 
6
  WORKDIR /app/frontend
7
 
 
8
  COPY frontend/package*.json ./
9
  RUN npm ci
10
 
 
11
  COPY frontend/ ./
12
  RUN npm run build
13
 
14
 
15
  # ─────────────────────────────────────────────
16
+ # Stage 2 β€” Build Go backend
17
  # ─────────────────────────────────────────────
18
  FROM golang:1.21-alpine AS backend-builder
19
 
20
  WORKDIR /app/backend
21
 
 
22
  COPY backend/go.mod backend/go.sum ./
23
  RUN go mod download
24
 
 
25
  COPY backend/ ./
26
  RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /portfolio-api ./cmd/main.go
27
 
 
37
  # βœ… Create non-root user (UID 1000 for HF Spaces)
38
  RUN adduser -D -u 1000 appuser
39
 
40
+ # Copy frontend
41
  COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html
42
 
43
+ # Copy backend binary
44
  COPY --from=backend-builder /portfolio-api /app/portfolio-api
45
 
46
  # Copy configs
47
  COPY nginx.conf /etc/nginx/nginx.conf
48
  COPY supervisord.conf /etc/supervisord.conf
49
 
50
+ # βœ… Create writable dirs for nginx (CRITICAL FIX)
51
+ RUN mkdir -p /tmp/nginx \
52
+ && chown -R appuser:appuser /tmp/nginx \
53
+ && chown -R appuser:appuser /usr/share/nginx/html \
54
  && chown -R appuser:appuser /var/cache/nginx \
55
  && chown -R appuser:appuser /var/log/nginx \
 
 
 
 
56
  && chmod +x /app/portfolio-api
57
 
58
+ # Switch user
59
  USER appuser
60
 
 
61
  EXPOSE 7860
62
 
63
  CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]