Files
play-life/Dockerfile
poignatov 2f16876185
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 44s
Bump version to 3.4.1 and add version logging on startup
2026-01-07 15:31:40 +03:00

63 lines
2.0 KiB
Docker
Raw 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
# Копируем собранный 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 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"]