diff --git a/Dockerfile b/Dockerfile index e69de29..eadf4d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -0,0 +1,35 @@ +# --- Этап 1: Сборка (Builder) --- +FROM golang:1.22-alpine AS builder + +WORKDIR /app + +# Копируем файлы go.mod и go.sum для загрузки зависимостей +COPY go.mod go.sum ./ +RUN go mod download + +# Копируем весь остальной исходный код +COPY . . + +# Собираем приложение. На этот раз точка входа - корень проекта. +RUN CGO_ENABLED=0 GOOS=linux go build -o /app/ping-helper -ldflags="-w -s" . + +# --- Этап 2: Финальный образ (Final) --- +FROM alpine:latest + +WORKDIR /app + +# Копируем только скомпилированный бинарник из этапа сборки +COPY --from=builder /app/ping-helper . + +# Добавляем сертификаты +RUN apk --no-cache add ca-certificates + +# Запускаем от имени непривилегированного пользователя +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +USER appuser + +# Указываем, что контейнер будет слушать порт 8081 +EXPOSE 8081 + +# Команда для запуска нашего приложения +ENTRYPOINT ["/app/ping-helper"]