mirror of
https://github.com/batonogov/learn-devops.git
synced 2026-02-19 10:50:43 +00:00
Add uv example (#30)
Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
This commit is contained in:
committed by
GitHub
parent
a998a1bfdb
commit
ea0d72d879
43
docker/blue-green-deployment/Dockerfile
Normal file
43
docker/blue-green-deployment/Dockerfile
Normal file
@@ -0,0 +1,43 @@
|
||||
# Используем официальный образ Golang
|
||||
FROM golang:1.23.4-alpine AS builder
|
||||
# Устанавливаем рабочую директорию
|
||||
WORKDIR /build
|
||||
# Копируем исходный код приложения в контейнер
|
||||
COPY ./main.go ./
|
||||
# Сборка приложения
|
||||
RUN CGO_ENABLED=0 go build main.go
|
||||
|
||||
# # Отдельный этап сборки для уменьшения размера образа
|
||||
# FROM alpine:3.20.3 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
|
||||
# # Запускаем приложение при старте контейнера
|
||||
# CMD ["./main"]
|
||||
|
||||
# Отдельный этап сборки для уменьшения размера образа
|
||||
FROM scratch
|
||||
# Создаем пользователя
|
||||
USER 100:100
|
||||
# Копируем скомпилированное приложение из предыдущего этапа
|
||||
COPY --from=builder --chown=100:100 /build/main /
|
||||
# Копируем curl для работы HEALTHCHECK
|
||||
COPY --from=ghcr.io/tarampampam/curl:8.10.1 /bin/curl /bin/curl
|
||||
# Запускаем healthcheck, проверяющий доступность веб-сервера на порту 8080
|
||||
HEALTHCHECK --interval=5s --timeout=5s --start-period=3s --retries=3 \
|
||||
CMD [ "curl", "--fail", "http://127.0.0.1:8080/" ]
|
||||
# Запускаем приложение при старте контейнера
|
||||
ENTRYPOINT ["/main"]
|
||||
Reference in New Issue
Block a user