39 lines
1.3 KiB
Docker
39 lines
1.3 KiB
Docker
# --- Этап 1: Сборка (Builder) ---
|
||
FROM golang:1.24-alpine AS builder
|
||
|
||
WORKDIR /app
|
||
|
||
# Копируем файлы go.mod и go.sum для загрузки зависимостей
|
||
# Копируем файлы go.mod и go.sum для загрузки зависимостей
|
||
COPY go.mod go.sum ./
|
||
ENV GOPROXY=direct
|
||
RUN apk add --no-cache git
|
||
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"]
|