Files
tp/main_dc/yalarba/api_yal/Dockerfile
T
2026-01-30 05:59:00 +05:00

47 lines
1.4 KiB
Docker

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"]