Улучшена безопасность Docker образа (#14)

This commit is contained in:
Fedor Batonogov
2024-07-03 21:59:21 +03:00
committed by GitHub
parent f8fe304cd9
commit a45b92d625

View File

@@ -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