mirror of
https://github.com/batonogov/learn-devops.git
synced 2026-03-01 07:41:18 +00:00
Улучшена безопасность Docker образа (#14)
This commit is contained in:
@@ -1,17 +1,27 @@
|
|||||||
# Используем официальный образ Golang
|
# Используем официальный образ Golang
|
||||||
FROM golang:1.22.4-alpine AS builder
|
FROM golang:1.22.5-alpine AS builder
|
||||||
# Устанавливаем рабочую директорию
|
# Устанавливаем рабочую директорию
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
# Копируем исходный код приложения в контейнер
|
# Копируем исходный код приложения в контейнер
|
||||||
COPY ./ ./
|
COPY ./ ./
|
||||||
|
# Сборка приложения
|
||||||
RUN CGO_ENABLED=0 go build main.go
|
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
|
WORKDIR /app
|
||||||
# Копируем скомпилированное приложение из предыдущего этапа
|
# Копируем скомпилированное приложение из предыдущего этапа
|
||||||
COPY --from=builder /build/main ./
|
COPY --from=builder /build/main ./
|
||||||
|
# Меняем владельца файлов на нового пользователя
|
||||||
|
RUN chown -R ${USERNAME}:${GROUPNAME} /app
|
||||||
|
# Запускаем контейнер от имени нового пользователя
|
||||||
|
USER ${USERNAME}
|
||||||
# Запускаем healthcheck, проверяющий доступность веб-сервера на порту 8080
|
# Запускаем healthcheck, проверяющий доступность веб-сервера на порту 8080
|
||||||
HEALTHCHECK --interval=5s --timeout=5s --start-period=3s --retries=3 \
|
HEALTHCHECK --interval=5s --timeout=5s --start-period=3s --retries=3 \
|
||||||
CMD wget --quiet --tries=1 --spider http://localhost:8080/ || exit 1
|
CMD wget --quiet --tries=1 --spider http://localhost:8080/ || exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user