Це машинний переклад, який може містити помилки!
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
Порівняйте це з ручним оновленням встановленого програмного забезпечення, де вам, можливо, доведеться завантажувати, налаштовувати та сподіватися, що нічого не зламається.
Завдання 1 - Налаштування Nginx за допомогою Docker Compose
Створіть docker-compose.yml, який запускає веб-сервер Nginx:
- Створіть нову папку та створіть файл
docker-compose.yml - Визначте сервіс з
image: nginx:latestна порту 80 - Запустіть
docker compose up -d - Відвідайте
http://localhostу браузері
Завдання 2 - Додайте сервіс
Розширте docker-compose.yml з завдання 1 додатковим сервісом. Наприклад:
- Uptime Kuma на порту 3001
- Grafana на порту 3000
Запустіть все за допомогою docker compose up -d і переконайтеся, що обидва сервіси працюють одночасно.
Підсумок
- Docker Compose дозволяє визначати декілька сервісів в одному файлі
- Файл Compose є як конфігурацією, так і документацією
- Volumes зберігають дані поза контейнером, щоб вони пережили перезапуски
- Оновлення:
docker compose pull+docker compose up -d - Docker спрощує переміщення сервісів між серверами