JavaRush /Курсы /Модуль 2: Fullstack /Настройка docker-compose.yml для запуска всех сервисов

Настройка docker-compose.yml для запуска всех сервисов

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

4.1 Инициализация

На этом шаге мы настроим файл compose.yaml, чтобы запустить все сервисы нашего многоконтейнерного приложения. Файл compose.yaml будет включать настройки для фронтенда, бекенда и базы данных, а также определение сетей и томов.

Определение версии Docker Compose

Начнем с указания версии Docker Compose. В данном примере используется версия 3:

Yaml

version: '3'

4.2 Определение сервисов

Сервис 1: Frontend (ReactJS)

Определим сервис для фронтенда, который будет собран из директории frontend и станет доступен на порту 3000:

Yaml

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

Сервис 2: Backend (Flask)

Определим сервис для бекенда, который будет собран из директории backend. Он зависит от сервиса базы данных и будет доступен на порту 5000:

Yaml

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

Где:

  • depends_on: указывает, что сервис backend зависит от сервиса database. Это означает, что база данных будет запущена перед запуском бекенда.
  • environment: настраивает переменные окружения для подключения к базе данных.

Сервис 3: Database (PostgreSQL)

Определим сервис для базы данных, используя официальный образ postgres:13. Настроим переменные окружения для создания базы данных и учетных данных пользователя:

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

Где:

  • environment: настраивает переменные окружения для создания базы данных и пользователя при запуске контейнера.
  • volumes: подключает том db-data для постоянного хранения данных.

4.3 Настройка сетей и томов

Определим сети и тома, которые будут использоваться нашими сервисами:

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Где:

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

4.4 Полный файл docker-compose.yml

Теперь объединим все части в один файл docker-compose.yml:

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:

Пояснение к настройкам

  • build: указывает путь к директории с Dockerfile для сборки образа.
  • ports: открывает порты на хосте для доступа к сервисам.
  • depends_on: указывает, что сервис зависит от другого, чтобы обеспечить порядок запуска.
  • environment: настраивает переменные окружения для сервисов.
  • networks: определяет сеть для связи между контейнерами.
  • volumes: определяет тома для постоянного хранения данных.

4.5 Запуск приложения

Теперь, когда файл compose.yaml настроен, мы можем запустить все сервисы с помощью одной команды:

Terminal

docker compose up

Эта команда создаст и запустит контейнеры для фронтенда, бекенда и базы данных, используя настройки, определенные в compose.yaml.

Проверка запуска

После запуска контейнеров, убедитесь, что все сервисы работают корректно:

  1. Frontend: откройте браузер и перейдите по адресу http://localhost:3000, чтобы проверить работу фронтенда.
  2. Backend: откройте браузер и перейдите по адресу http://localhost:5000, чтобы проверить работу бекенда.
  3. Database: убедитесь, что контейнер базы данных запущен и доступен через сетевое взаимодействие с бекендом.
3
Задача
Модуль 2: Fullstack, 18 уровень, 3 лекция
Недоступна
Настройка базы данных PostgreSQL
Настройка базы данных PostgreSQL
3
Задача
Модуль 2: Fullstack, 18 уровень, 3 лекция
Недоступна
Полная настройка и запуск всех сервисов
Полная настройка и запуск всех сервисов
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ