FROM golang:1.25.1-alpine AS builder

WORKDIR /app

# Устанавливаем зависимости для компиляции
RUN apk add --no-cache gcc musl-dev git ca-certificates tzdata

# Копируем go.mod и go.sum
COPY go.mod go.sum ./
RUN go mod download

# Копируем исходный код
COPY . .

# Компилируем БЕЗ CGO (указываем путь к main.go)
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/bin/api_yal ./cmd/main.go

# Финальный образ
FROM alpine:latest AS runner

WORKDIR /app

# Устанавливаем зависимости для runtime
RUN apk add --no-cache ca-certificates tzdata curl

# Создаем непривилегированного пользователя
RUN addgroup -g 1001 -S api && \
    adduser -u 1001 -S api -G api

# Копируем бинарник из builder
COPY --from=builder /app/bin/api_yal /app/api_yal

# УДАЛИЛИ СТРОКУ копирования configs или добавим проверку
# Копируем конфигурационные файлы, если они существуют
# COPY --from=builder /app/configs /app/configs || true

# Настраиваем права доступа
RUN chown -R api:api /app

# Переключаемся на непривилегированного пользователя
USER api

# Открываем порт
EXPOSE 8787

# Команда для запуска
CMD ["/app/api_yal"]