Лабораторна робота №6

Docker Compose - це інструмент для оркестрації та управління багатьма Docker контейнерами. Він дозволяє визначати та запускати складні архітектури додатків, які складаються з різних сервісів та їх залежностей. В основі Docker Compose лежить конфігураційний файл docker-compose.yml, що описує параметри та взаємодію між контейнерами.

Основні поняття Docker Compose:

  1. Сервіси (Services):

    • Сервіс - це один або більше контейнерів, які взаємодіють між собою.
    • Кожен сервіс визначається в docker-compose.yml та може використовувати свій власний Docker образ.
  2. Мережі (Networks):

    • Docker Compose створює мережі для забезпечення зв'язку між сервісами.
    • Спільні мережі дозволяють контейнерам в одному сервісі спілкуватися з контейнерами інших сервісів.
  3. Змінні середовища (Environment Variables):

    • Docker Compose дозволяє встановлювати змінні середовища для кожного сервісу, що полегшує конфігурацію.
  4. Залежності та Порядок Запуску (Dependencies and Startup Order):

    • Ви можете визначити залежності між сервісами та порядок їх запуску, щоб гарантувати коректне встановлення та роботу додатка.

Завдання

1. Створіть новий каталог для лабораторної роботи та перейдіть в нього.
mkdir docker_compose_lab cd docker_compose_lab

2. Створіть файл docker-compose.yml у цьому каталозі для опису сервісів та налаштувань контейнерів.

version: '3' services: web: image: nginx:alpine ports: - "8080:80" networks: - mynetwork db: image: postgres:alpine environment: POSTGRES_DB: mydatabase POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword networks: - mynetwork networks: mynetwork:

3. Визначте два сервіси: web з веб-сервером Nginx та db з базою даних PostgreSQL. Встановіть мережу mynetwork для обох сервісів.

4. Запустіть контейнери за допомогою Docker Compose:

docker-compose up -d

5. Перевірте статус та життєздатність контейнерів:

docker-compose ps


6. Відкрийте веб-браузер і перейдіть за адресою http://localhost:8080. Ви повинні бачити сторінку Nginx за замовчуванням.

7. Перевірте підключення до бази даних PostgreSQL. Використовуйте іншу оболонку або інструмент для роботи з PostgreSQL, або використовуйте psql в контейнері:

docker-compose exec db psql -U myuser -d mydatabase

8. Введіть пароль (mypassword) та переконайтеся, що ви ввійшли у систему PostgreSQL.

9. Зупиніть та видаліть контейнери:

docker-compose down

10. Розширте файл docker-compose.yml, додаючи новий сервіс, наприклад, api, який використовує образ node:alpine та слухає на порту 3000.

version: '3' services: web: image: nginx:alpine ports: - "8080:80" networks: - mynetwork db: image: postgres:alpine environment: POSTGRES_DB: mydatabase POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword networks: - mynetwork api: image: node:alpine ports: - "3000:3000" networks: - mynetwork networks: mynetwork:

11. Запустіть оновлений склад сервісів:

docker-compose up -d

12. Перевірте статус та життєздатність всіх сервісів:

docker-compose ps

13. Відкрийте веб-браузер і перевірте доступність сторінки Nginx за адресою http://localhost:8080 та API за адресою http://localhost:3000.

14. Зупиніть та видаліть контейнери:

docker-compose down
15. Розширте файл docker-compose.yml, додаючи новий сервіси mysql та apache2 :