5.1 Налаштування мереж
Давайте ще раз детально розглянемо, як налаштувати мережі і томи для нашого багатоконтейнерного застосунку. Це забезпечить правильну взаємодію між сервісами і довготривале збереження даних.
Docker-мережі дозволяють контейнерам взаємодіяти між собою. У нашому застосунку ми будемо використовувати bridge-мережу для зв’язку між фронтендом, бекендом і базою даних.
Створення мережі
Ми вже визначили мережу task-network у файлі docker-compose.yml:
networks:
task-network:
driver: bridge
Де:
- task-network: ім’я мережі, яка буде використовуватися для взаємодії контейнерів.
- driver:
bridge: тип мережі. Мережаbridgeє стандартною для зв’язку контейнерів на одному хості.
Підключення сервісів до мережі
Ми підключили всі сервіси до цієї мережі у файлі docker-compose.yml. Переконаймося, що кожен сервіс правильно підключений:
Приклад для фронтенду:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Приклад для бекенду:
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
Приклад для бази даних:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
5.2 Налаштування томів
Docker-томи дозволяють зберігати дані контейнерів на хостовій системі, забезпечуючи їх довготривале збереження. У нашому застосунку ми будемо використовувати том для зберігання даних бази даних PostgreSQL.
Створення тому
Ми вже визначили том db-data у файлі compose.yaml:
volumes:
db-data:
Де:
-
db-data: ім'я тому, який буде використовуватися для зберігання даних бази даних PostgreSQL.
Підключення тому до сервісу бази даних
Ми підключили том db-data до сервісу бази даних у файлі docker-compose.yml. Переконаймося, що це зроблено правильно:
Приклад для бази даних:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
Де:
-
volumes: визначає, які томи будуть підключені до контейнера. -
db-data:/var/lib/postgresql/data: зв'язує томdb-dataз директорією/var/lib/postgresql/dataвсередині контейнера. Ця директорія використовується PostgreSQL для зберігання даних.
5.3 Повний файл compose.yaml
Для ясності та завершеності наведемо повний файл compose.yaml, який включає налаштування мереж та томів:
version: '3'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
networks:
task-network:
driver: bridge
volumes:
db-data:
Перевірка налаштувань мереж та томів
Після налаштування мереж та томів переконайтеся, що все налаштовано правильно та працює коректно:
- 1. Запуск контейнерів:
Terminal
docker compose up - 2. Перевірка мережі:
- Використайте команду
docker network ls, щоб переконатися, що мережаtask-networkбула створена. - Використайте команду
docker network inspect task-network, щоб перевірити, що всі контейнери підключені до цієї мережі.
- Використайте команду
- 3. Перевірка томів:
- Використайте команду
docker volume ls, щоб переконатися, що томdb-dataбув створений. - Використайте команду
docker volume inspect db-data, щоб перевірити деталі тому.
- Використайте команду
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ