From a45b92d625ef7f08da8b5f03ef711408bf3701a6 Mon Sep 17 00:00:00 2001 From: Fedor Batonogov Date: Wed, 3 Jul 2024 21:59:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B1=D0=B5=D0=B7=D0=BE=D0=BF=D0=B0=D1=81=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20Docker=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=B0=20(#14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index df95936..0a5debe 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,17 +1,27 @@ # Используем официальный образ Golang -FROM golang:1.22.4-alpine AS builder +FROM golang:1.22.5-alpine AS builder # Устанавливаем рабочую директорию WORKDIR /build # Копируем исходный код приложения в контейнер COPY ./ ./ +# Сборка приложения RUN CGO_ENABLED=0 go build main.go # Отдельный этап сборки для уменьшения размера образа -FROM alpine:3.20.0 AS runner +FROM alpine:3.20.1 AS runner +# Определяем аргумент для имени пользователя +ARG USERNAME=appuser +ARG GROUPNAME=appgroup +# Создаем пользователя и группу +RUN addgroup -S ${GROUPNAME} && adduser -S ${USERNAME} -G ${GROUPNAME} # Устанавливаем рабочую директорию WORKDIR /app # Копируем скомпилированное приложение из предыдущего этапа COPY --from=builder /build/main ./ +# Меняем владельца файлов на нового пользователя +RUN chown -R ${USERNAME}:${GROUPNAME} /app +# Запускаем контейнер от имени нового пользователя +USER ${USERNAME} # Запускаем healthcheck, проверяющий доступность веб-сервера на порту 8080 HEALTHCHECK --interval=5s --timeout=5s --start-period=3s --retries=3 \ CMD wget --quiet --tries=1 --spider http://localhost:8080/ || exit 1