47 lines
1.4 KiB
Docker
47 lines
1.4 KiB
Docker
FROM golang:1.26.0-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 tidy
|
|
|
|
# Копируем исходный код
|
|
COPY . .
|
|
|
|
# Компилируем БЕЗ CGO (указываем путь к main.go)
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/bin/api_yal ./cmd/main.go
|
|
|
|
# Финальный образ
|
|
FROM golang:1.26.0-alpine 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"] |