/
Andromeda141
/
Adventure-service
Обзор
Документация
Войти
/
Andromeda141
/
Adventure-service
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
poll
dockerfile
57 строк
2 KB
andrewvnukov
News commit
07 июн 2026, 11:59
07 июн 2026, 11:59
c6cc0cf
Код
Авторство
О чём код?
# ========================================================= # ЭТАП 1: Сборка Frontend (React/Vite) # ========================================================= 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 # ========================================================= # ЭТАП 2: Сборка Backend (Go) # ========================================================= FROM golang:1.22-alpine AS backend-builder WORKDIR /app # Устанавливаем необходимые для сборки пакеты (если нужны) # RUN apk add --no-cache git # Копируем go.mod и go.sum для кэширования загрузки модулей COPY go.mod go.sum ./ RUN go mod download # Копируем весь исходный код бэкенда COPY . ./ # Копируем собранный фронтенд в папку, которую ожидает Go-сервер COPY --from=frontend-builder /app/frontend/dist ./web/dist # Собираем статический бинарный файл Go # CGO_ENABLED=0 делает бинарник полностью статическим (идеально для Alpine) RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o trip-service . # ========================================================= # ЭТАП 3: Финальный минимальный образ для запуска # ========================================================= FROM alpine:latest # Устанавливаем корневые сертификаты (обязательно для HTTPS запросов к rss2json/Google) # и данные о часовых поясах RUN apk --no-cache add ca-certificates tzdata WORKDIR /app # Копируем только скомпилированный бинарник и папку с фронтендом COPY --from=backend-builder /app/trip-service . COPY --from=backend-builder /app/web/dist ./web/dist # Указываем порт, который слушает приложение EXPOSE 8080 # Команда запуска CMD ["./trip-service"]