Docker як автоматизація

Skip to content

Це машинний переклад, який може містити помилки!

Docker спрощує розгортання додатків. Замість ручного встановлення та налаштування програмного забезпечення на сервері, ви визначаєте все в конфігураційних файлах. Результатом є відтворюваність, портативність і швидкість налаштування.

Що таке Docker Compose?

За допомогою Docker Compose ви визначаєте декілька сервісів в одному файлі (docker-compose.yml). Кожен сервіс є контейнером з власною конфігурацією.

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"

Один приказ налаштовує все:

docker compose up -d
# Стартує сервіси Docker Compose у фоновому режимі

Чи потрібно вам перенести сервіс на інший сервер? Скопіюйте файл та виконайте ту ж команду. Все ідентичне.

Чому це автоматизація?

Подумайте про різницю:

Ручне налаштування З Docker Compose
Встановити Nginx вручну image: nginx:latest
Налаштувати порти ports: "80:80"
Встановити Grafana вручну image: grafana/grafana:latest
Задокументувати всі кроки Все задокументовано у .yml-файлі
Повторити все на наступному сервері docker compose up -d

Файл Docker Compose є документацією. Він точно описує, які сервіси працюють, які порти вони використовують і як вони налаштовані.

Корисні Docker-команди

Команда Що вона робить
docker compose up -d Запускає всі сервіси у фоновому режимі
docker compose down Зупиняє та видаляє всі контейнери
docker compose logs -f Відстежує логи в реальному часі
docker compose pull Завантажує останню версію всіх образів
docker compose restart Перезапускає всі сервіси
docker ps Показує запущені контейнери

Volumes: Збереження даних поза контейнером

Контейнери є тимчасовими. Якщо ви видалите контейнер, весь вміст зникне. Щоб зберегти дані, ми використовуємо volumes:

services:
  database:
    image: postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: hemmelig # Пароль для бази даних
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Тут файли бази даних зберігаються в томі під назвою db-data. Навіть якщо ви видалите та знову створите контейнер, дані все одно залишаться там.

Оновлення сервісів

Оновити Docker-сервіс дуже просто:

# Отримати останню версію
docker compose pull

# Перезапустити з новою версією
docker compose up -d

Порівняйте це з ручним оновленням встановленого програмного забезпечення, де вам, можливо, доведеться завантажувати, налаштовувати та сподіватися, що нічого не зламається.

Easy Завдання 1 - Налаштування Nginx за допомогою Docker Compose

Створіть docker-compose.yml, який запускає веб-сервер Nginx:

  1. Створіть нову папку та створіть файл docker-compose.yml
  2. Визначте сервіс з image: nginx:latest на порту 80
  3. Запустіть docker compose up -d
  4. Відвідайте http://localhost у браузері

Medium Завдання 2 - Додайте сервіс

Розширте docker-compose.yml з завдання 1 додатковим сервісом. Наприклад:

Запустіть все за допомогою docker compose up -d і переконайтеся, що обидва сервіси працюють одночасно.

Підсумок

  • Docker Compose дозволяє визначати декілька сервісів в одному файлі
  • Файл Compose є як конфігурацією, так і документацією
  • Volumes зберігають дані поза контейнером, щоб вони пережили перезапуски
  • Оновлення: docker compose pull + docker compose up -d
  • Docker спрощує переміщення сервісів між серверами