JavaRush /Курсы /Модуль 2: Fullstack /Настройка сетей и томов для приложения

Настройка сетей и томов для приложения

Модуль 2: Fullstack
18 уровень , 4 лекция
Открыта

5.1 Настройка сетей

Давайте еще раз детально рассмотрим, как настроить сети и тома для нашего многоконтейнерного приложения. Это обеспечит правильное взаимодействие между сервисами и долговременное хранение данных.

Docker-сети позволяют контейнерам взаимодействовать друг с другом. В нашем приложении мы будем использовать bridge-сеть для связи между фронтендом, бекендом и базой данных.

Создание сети

Мы уже определили сеть task-network в файле docker-compose.yml:

Yaml

networks:
  task-network:
    driver: bridge

Где:

  • task-network: имя сети, которая будет использоваться для взаимодействия контейнеров.
  • driver: bridge: тип сети. Сеть bridge является стандартной для связи контейнеров на одном хосте.

Подключение сервисов к сети

Мы подключили все сервисы к этой сети в файле docker-compose.yml. Убедимся, что каждый сервис правильно подключен:

Пример для фронтенда:

Yaml

frontend:
  build: ./frontend
  ports:
    - "3000:3000"
  networks:
    - task-network

Пример для бекенда:

Yaml

backend:
  build: ./backend
  ports:
    - "5000:5000"
  depends_on:
    - database
  networks:
    - task-network
  environment:
    - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Пример для базы данных:

Yaml

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:

Yaml

volumes:
  db-data:

Где:

  • db-data: имя тома, который будет использоваться для хранения данных базы данных PostgreSQL.

Подключение тома к сервису базы данных

Мы подключили том db-data к сервису базы данных в файле docker-compose.yml. Убедимся, что это сделано правильно:

Пример для базы данных:

Yaml

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, включающий настройки сетей и томов:

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. 1. Запуск контейнеров:
    Terminal
    
    docker compose up
                
  2. 2. Проверка сети:
    • Используйте команду docker network ls, чтобы убедиться, что сеть task-network была создана.
    • Используйте команду docker network inspect task-network, чтобы проверить, что все контейнеры подключены к этой сети.
  3. 3. Проверка томов:
    • Используйте команду docker volume ls, чтобы убедиться, что том db-data был создан.
    • Используйте команду docker volume inspect db-data, чтобы проверить детали тома.
3
Задача
Модуль 2: Fullstack, 18 уровень, 4 лекция
Недоступна
Создание сети для контейнеров
Создание сети для контейнеров
3
Задача
Модуль 2: Fullstack, 18 уровень, 4 лекция
Недоступна
Подключение сервисов к сети
Подключение сервисов к сети
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ