# ================================
# Stage 1: сборка Vue
# ================================
FROM node:20-alpine AS frontend

WORKDIR /app

COPY frontend/package*.json ./
RUN npm ci

COPY frontend/ ./
RUN npm run build

# ================================
# Stage 2: сборка Go
# ================================
FROM golang:1.26-bookworm AS backend

WORKDIR /app

# зависимости отдельно — используем кэш слоёв
COPY backend/go.mod backend/go.sum ./
RUN go mod download

# исходники
COPY backend/ ./

# встраиваем собранную статику Vue
COPY --from=frontend /app/dist ./src/api/dist
# Миграции кладём туда, откуда Go их ищет
COPY backend/migrations ./migrations
# сборка бинарника
RUN CGO_ENABLED=0 GOOS=linux go build -o server ./src/

# ================================
# Stage 3: финальный образ
# ================================
FROM scratch

COPY --from=backend /app/server /server
COPY --from=backend /app/migrations /migrations
COPY --from=backend /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=backend /usr/share/zoneinfo /usr/share/zoneinfo

ENTRYPOINT ["/server"]