Загрузка...

Docker Compose

Как использовать docker-compose
docker

Docker Compose — это мощный инструмент для определения и управления многоконтейнерными Docker-приложениями. Он позволяет описывать конфигурацию всех сервисов вашего приложения в одном YAML-файле и управлять ими с помощью простых команд. В этом руководстве мы подробно рассмотрим использование команды docker-compose, доступные флаги и предоставим актуальный пример создания файла docker-compose.yml.

Установка Docker Compose

Docker Compose обычно поставляется вместе с Docker. Чтобы проверить, установлен ли он, выполните команду:

docker-compose --version

Если Docker Compose не установлен, следуйте официальной инструкции по установке: https://docs.docker.com/compose/install/.

Создание файла docker-compose.yml

Файл docker-compose.yml описывает конфигурацию вашего приложения, включая сервисы, сети и тома. Рассмотрим актуальный пример для веб-приложения, состоящего из фронтенда на React, бэкенда на Spring Boot, базы данных PostgreSQL и инструмента pgAdmin для управления базой данных:

version: '3.8'
services:
  frontend:
    image: node:14
    working_dir: /app
    volumes:
      - ./frontend:/app
    ports:
      - "3000:3000"
    command: ["npm", "start"]
    depends_on:
      - backend

  backend:
    image: openjdk:11
    working_dir: /app
    volumes:
      - ./backend:/app
    ports:
      - "8080:8080"
    command: ["./mvnw", "spring-boot:run"]
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/mydatabase
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - db_data:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: admin
    ports:
      - "5050:80"
    depends_on:
      - db

volumes:
  db_data:

В этом примере:

  • frontend: Сервис для фронтенда на React, использующий образ Node.js.
  • backend: Сервис для бэкенда на Spring Boot, использующий образ OpenJDK.
  • db: Сервис базы данных PostgreSQL.
  • pgadmin: Инструмент pgAdmin для управления PostgreSQL.

Сервисы frontend и backend монтируют локальные директории ./frontend и ./backend соответственно в директорию /app внутри контейнера. Это позволяет разрабатывать приложение на локальной машине и сразу видеть изменения.

Основные команды Docker Compose

  • Запуск сервисов:
    docker-compose up

    Эта команда запускает все сервисы, определенные в docker-compose.yml. Добавление флага -d переведет их в фоновый режим:

    docker-compose up -d
  • Остановка сервисов:
    docker-compose down

    Останавливает и удаляет все запущенные контейнеры, сети и тома, созданные Docker Compose.

  • Перезапуск сервисов:
    docker-compose restart

    Перезапускает все или указанные сервисы.

  • Просмотр логов:
    docker-compose logs

    Выводит логи всех или указанного сервиса.

  • Выполнение команды внутри контейнера:
    docker-compose exec <service_name> <command>

    Например, чтобы получить доступ к оболочке контейнера backend:

    docker-compose exec backend /bin/sh

Доступные флаги и опции

Команда docker-compose поддерживает множество флагов и опций для управления сервисами. Рассмотрим основные из них:

  • -f, --file FILE: Указывает альтернативный файл конфигурации. По умолчанию используется docker-compose.yml.
    docker-compose -f custom-compose.yml up
  • -p, --project-name NAME: Задает имя проекта. По умолчанию используется имя текущей директории.
    docker-compose -p myproject up
  • --build: Пересобирает образы перед запуском.
    docker-compose up --build
  • --force-recreate: Принудительно пересоздает контейнеры, даже если их конфигурация не изменилась.
    docker-compose up --force-recreate
  • --no-deps: Запускает указанные сервисы без их зависимостей.
    docker-compose up --no-deps service_name
  • -d, --detach: Запускает контейнеры в фоновом режиме и выводит управление в консоль.
    docker-compose up -d
  • --scale SERVICE=NUM: Масштабирует указанный сервис до заданного количества контейнеров.
    docker-compose up --scale web=3
  • --remove-orphans: Удаляет контейнеры, не определенные в текущем файле docker-compose.yml.
    docker-compose up --remove-orphans
  • -v, --verbose: Включает подробный вывод для отладки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *