Змінні Середовища та Конфігурація в Compose
Свайпніть щоб показати меню
Використання змінних середовища у docker-compose.yml
Змінні середовища дозволяють створювати гнучкі та повторно використовувані конфігурації Docker Compose. Визначаючи змінні, ви уникаєте жорсткого прописування значень, таких як порти, теги образів або облікові дані, безпосередньо у файлі docker-compose.yml. Замість цього ви посилаєтеся на ці змінні, і Docker Compose підставляє їхні значення під час виконання. Такий підхід особливо корисний при розгортанні одного й того ж застосунку у різних середовищах, наприклад, для розробки, тестування чи продакшну.
Щоб визначити та використовувати змінні середовища у файлі Compose, виконайте такі кроки:
- Зберігайте змінні середовища у файлі
.envу тій самій директорії, що й вашdocker-compose.yml; - Посилайтеся на змінні у файлі Compose за допомогою синтаксису
${VARIABLE_NAME}; - Перезаписуйте змінні, передаючи їх безпосередньо у shell або як частину CI/CD-процесу.
Припустимо, ви хочете налаштувати пароль до бази даних і порт застосунку за допомогою змінних середовища. Створіть файл .env зі вмістом:
DB_PASSWORD=supersecret
APP_PORT=8080
У вашому docker-compose.yml посилайтеся на ці змінні так:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Під час запуску docker-compose up Docker Compose підставить значення з файлу .env у конфігурацію. Такий метод дозволяє тримати чутливі або специфічні для середовища дані поза файлом Compose і робить вашу конфігурацію більш портативною.
Керування секретами та чутливими даними у файлах Compose
Хоча змінні середовища зручні, вони не завжди є найбезпечнішим способом роботи з чутливою інформацією, такою як паролі, API-ключі чи сертифікати. Змінні середовища можуть бути випадково розкриті через журнали, списки процесів або систему контролю версій, якщо не дотримуватися обережності. Для підвищення безпеки можна використовувати кілька технік керування секретами у Docker Compose:
- Зберігайте чутливі значення у окремому файлі
.envі переконайтеся, що цей файл виключено з контролю версій за допомогою.gitignore; - Використовуйте підтримку Docker secrets у разі розгортання з Docker Swarm, що дозволяє безпечно монтувати секрети як файли всередині контейнерів;
- Посилайтеся на секрети як на файли на хості та монтуйте їх у контейнер за допомогою ключа
volumesу файлі Compose.
Приклад: Щоб не розкривати пароль до бази даних, збережіть його у файлі db_password.txt і змонтуйте у контейнер:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Такий підхід дозволяє тримати справжній секрет поза файлом Compose і змінними середовища, зменшуючи ризик випадкового розкриття. Завжди перевіряйте свою конфігурацію та робочі процеси, щоб переконатися, що секрети захищені, і ніколи не додавайте чутливі дані до системи контролю версій.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат