👁 Существует возможность не только строить образы с помощью multi-stage builds, но и эффективно управлять секретами, такими как API-ключи или пароли, прямо в процессе сборки. Использование аргументов ARG в сочетании с переменными окружения позволяет делать процесс сборки более гибким и безопасным.
📝 Использование Multi-Stage Builds для уменьшения размера образа
Когда вы создаете Dockerfile с несколькими этапами, вы можете уменьшить размер итогового образа, исключив временные файлы и зависимости, которые не нужны в финальной версии. Например, вы можете использовать один этап для установки зависимостей, а затем только скопировать финальные артефакты в новый чистый образ.
# Этап 1: Сборка FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o myapp # Этап 2: Финальный образ FROM alpine:latest WORKDIR /root/ COPY --from=builder /app/myapp . CMD ["./myapp"]
📝Передача секретов с помощью ARG и ENV
Для безопасной передачи секретов во время сборки образа вы можете использовать переменные окружения, которые можно передавать через флаг --build-arg и затем использовать их для настройки. Пример с использованием ARG для API-ключа:
FROM node:14 AS builder ARG API_KEY RUN curl -H "Authorization: Bearer $API_KEY" https://example.com Для сборки используем: docker build --build-arg API_KEY=my-secret-api-key -t myapp .
📝 Секреты в Docker Compose
При использовании Docker Compose можно передавать переменные окружения в docker-compose.yml, не оставляя их в Dockerfile, что увеличивает безопасность:
version: '3.7'
services:
app:
build:
context: .
args:
API_KEY: ${API_KEY}
environment:
- API_KEY=${API_KEY}📌 Взаимодействие между многими контейнерами, управление зависимостями и исключение лишних файлов и настроек — ключевые моменты, которые помогут вам повысить производительность и безопасность на этапе сборки Docker образа.
tags: #docker #разработка


