Docker Compose: Основы и использование

Docker Compose — это мощный и популярный инструмент, используемый для управления и развертывания приложений на основе Docker. Он позволяет определять, настраивать и запускать несколько Docker контейнеров как единый проект, упрощая развертывание приложений и обеспечивая согласованность между средами разработки и производственной средой.

Ниже приведены некоторые концепции и примеры Docker Compose:

Определите проект с помощью файла docker-compose.yml.

В docker-compose.yml файле вы можете определить службы, необходимые для вашего приложения. Например, чтобы развернуть веб-приложение PHP с базой данных MySQL, вы можете определить две службы следующим образом:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "80:80"  
    volumes:  
   - ./app:/var/www/html  
  
  db:  
    image: mysql:5.7  
    environment:  
      MYSQL_ROOT_PASSWORD: password  
      MYSQL_DATABASE: my_database  

В приведенном выше фрагменте кода мы определяем две службы: web и db. Служба web будет использовать PHP 7.4 image с Apache, прослушивать порт 80 и монтировать ./app каталог с хоста в /var/www/html каталог в container. Служба db будет использовать MySQL 5.7 image и установить некоторые переменные среды, необходимые для базы данных.

 

Использование Docker Compose команды

После того как вы определили проект в docker-compose.yml файле, вы можете использовать Docker Compose команды для управления службами.

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

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

  • Остановите и удалите контейнеры: docker-compose down

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

  • Список запущенных контейнеров: docker-compose ps

    Эта команда отобразит состояние контейнеров в проекте.

  • Просмотр журналов службы: docker-compose logs

    Эта команда показывает журналы служб в проекте.

 

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

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

Например, если вы хотите определить переменную среды для порта службы web, вы можете добавить в файл строку, .env подобную этой:

WEB_PORT=8080

Затем в docker-compose.yml файле вы можете использовать эту переменную среды следующим образом:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "${WEB_PORT}:80"  
    volumes:  
   - ./app:/var/www/html  

При выполнении docker-compose up команды web служба будет прослушивать порт 8080 вместо порта 80.

 

Интеграция с Docker Swam

Если вы хотите развернуть свое приложение в распределенной среде с несколькими узлами, Docker Compose вы можете интегрироваться с Docker Swarm. Это позволяет вам управлять службами на нескольких узлах в Docker кластере.

Чтобы использовать эту интеграцию, вам просто нужно добавить параметры --orchestrate или --with-registry-auth при запуске docker stack deploy или docker-compose up команды в Swarm среде.

 

Docker Compose — это полезный инструмент для простой и эффективной разработки, тестирования и развертывания приложений. Это сводит к минимуму различия между средами разработки и производства, обеспечивает согласованность процесса разработки программного обеспечения и повышает производительность групп разработчиков.