chat_b / Dockerfile
Levin-Aleksey's picture
Fix Next standalone bind host for nginx upstream
ebe3a21
# Stage 1: Build frontend
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build
# Stage 2: Final image
FROM python:3.10-slim
# Install nginx, supervisor and node runtime for Next.js standalone server
RUN apt-get update && apt-get install -y nginx supervisor nodejs && rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Backend
COPY backend/requirements.txt ./backend/
RUN pip install --no-cache-dir -r backend/requirements.txt
COPY backend/ ./backend/
# Frontend from builder
COPY --from=frontend-builder /app/frontend/.next/standalone ./frontend/
COPY --from=frontend-builder /app/frontend/.next/static ./frontend/.next/static
# Nginx config
COPY nginx.conf /etc/nginx/nginx.conf
# Supervisor config
RUN cat > /etc/supervisor/conf.d/app.conf << 'EOF'
[supervisord]
nodaemon=true
[program:backend]
command=uvicorn backend.main:app --host 127.0.0.1 --port 8000
directory=/app
autostart=true
autorestart=true
[program:frontend]
command=node frontend/server.js
directory=/app
environment=PORT=3000,HOSTNAME=0.0.0.0
autostart=true
autorestart=true
[program:nginx]
command=nginx -g "daemon off;"
autostart=true
autorestart=true
EOF
EXPOSE 7860
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]