Files
play-life/Dockerfile
poignatov d368929a4a
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 52s
fix: add migrations folder to Docker image for wishlist tables
- Added COPY play-life-backend/migrations /migrations to Dockerfile
- Fixed 'relation wishlist_items does not exist' error on production
- Bump version to 3.9.2
2026-01-11 21:36:28 +03:00

69 lines
2.3 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Multi-stage build для единого образа frontend + backend
# Stage 1: Build Frontend
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
COPY play-life-web/package*.json ./
RUN npm ci
# Копируем исходники (node_modules исключены через .dockerignore)
COPY play-life-web/ .
RUN npm run build
# Stage 2: Build Backend
FROM golang:1.21-alpine AS backend-builder
WORKDIR /app/backend
COPY play-life-backend/go.mod play-life-backend/go.sum ./
RUN go mod download
COPY play-life-backend/ .
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
# Stage 3: Final image
FROM alpine:latest
# Устанавливаем необходимые пакеты
# tzdata — данные о часовых поясах для корректной работы планировщика
RUN apk --no-cache add \
ca-certificates \
nginx \
supervisor \
curl \
tzdata
# Создаем директории
WORKDIR /app
# Создаем директорию для загруженных файлов
RUN mkdir -p /app/uploads/wishlist && \
chmod 755 /app/uploads
# Копируем собранный frontend
COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html
# Копируем собранный backend
COPY --from=backend-builder /app/backend/main /app/backend/main
COPY play-life-backend/admin.html /app/backend/admin.html
# Копируем миграции для применения при запуске
COPY play-life-backend/migrations /migrations
# Копируем файл версии
COPY VERSION /app/VERSION
# Копируем конфигурацию nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY nginx-unified.conf /etc/nginx/conf.d/default.conf
# Копируем конфигурацию supervisor для запуска backend
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Создаем директории для логов
RUN mkdir -p /var/log/supervisor && \
mkdir -p /var/log/nginx && \
mkdir -p /var/run
# Открываем порт 80
EXPOSE 80
# Запускаем supervisor, который запустит nginx и backend
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]