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, щоб перевірити деталі тому.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ