Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Змінні Середовища та Конфігурація у Compose | Робота з Docker Compose
Основи Docker

bookЗмінні Середовища та Конфігурація у 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 і змінними середовища, зменшуючи ризик випадкового розкриття. Завжди перевіряйте свою конфігурацію та робочі процеси, щоб переконатися, що секрети захищені, і ніколи не комітьте чутливі дані у систему контролю версій.

question mark

Яка основна перевага використання змінних середовища у файлі Docker Compose?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 7.14

bookЗмінні Середовища та Конфігурація у 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 і змінними середовища, зменшуючи ризик випадкового розкриття. Завжди перевіряйте свою конфігурацію та робочі процеси, щоб переконатися, що секрети захищені, і ніколи не комітьте чутливі дані у систему контролю версій.

question mark

Яка основна перевага використання змінних середовища у файлі Docker Compose?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
some-alt