# Используем официальный Node.js образ
FROM node:22-alpine

# Устанавливаем pnpm глобально
RUN npm install -g pnpm@9.14.4

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем файлы конфигурации пакетов
COPY package.json pnpm-lock.yaml ./

# Устанавливаем зависимости
# Если lockfile не синхронизирован, обновляем его автоматически
RUN pnpm install

# Копируем остальные файлы проекта
COPY . .

# Устанавливаем переменную окружения для Docker
ENV DOCKER=true

# Accept build arguments and set environment variables
ARG OAUTH_GITHUB_CLIENT_ID
ARG OAUTH_GITHUB_CLIENT_SECRET
ENV OAUTH_GITHUB_CLIENT_ID=${OAUTH_GITHUB_CLIENT_ID}
ENV OAUTH_GITHUB_CLIENT_SECRET=${OAUTH_GITHUB_CLIENT_SECRET}

# Собираем проект
RUN pnpm run build

# Открываем порт (Node.js adapter по умолчанию использует 4321)
EXPOSE 4321

# Устанавливаем переменную окружения для порта
ENV PORT=4321
ENV HOST=0.0.0.0

# Запускаем Astro сервер через Node.js adapter
# В standalone режиме entry point находится в dist/server/entry.mjs
CMD ["node", "dist/server/entry.mjs"]