hostprofi.ru
Подобрать хостинг
Термин·буква D

Docker Compose

краткое определение

Docker Compose — инструмент для описания и запуска многоконтейнерных Docker-приложений через YAML-файл. Один файл docker-compose.yml описывает все сервисы, сети и тома. Запуск всего стека — одной командой docker compose up.

Docker Compose — инструмент оркестрации контейнеров на уровне одного хоста. Конфигурация приложения описывается в файле docker-compose.yml, содержащем описание сервисов (контейнеров), их зависимостей, сетей, томов и переменных окружения. Compose обеспечивает воспроизводимое развёртывание стека: одна команда создаёт все контейнеры и настраивает сети между ними.

Пример docker-compose.yml

version: '3.9'
services:
  nginx:
    image: nginx:alpine
    ports: ["80:80", "443:443"]
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on: [php]

  php:
    build: ./php
    volumes:
      - ./site:/var/www/html
    depends_on: [mysql]

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

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

docker compose up -d        # Запустить в фоне
docker compose down         # Остановить и удалить
docker compose logs -f      # Следить за логами
docker compose ps           # Статус контейнеров
docker compose exec php bash # Войти в контейнер

История

Docker Compose создан компанией Orchard Laboratories в 2013 году как fig. Docker Inc. купила Orchard в 2014 году и переименовала в Docker Compose. Compose V2 (2021) переписан на Go и интегрирован в Docker CLI как docker compose (без дефиса) вместо docker-compose. Docker Desktop включает Compose по умолчанию.

Связь с хостингом

Docker Compose — стандарт для development-окружений и небольших production-деплоев на VDS. Для production на одном сервере Compose достаточен; для кластеров переходят на Kubernetes или Docker Swarm. Типичный стек для WordPress: nginx + php-fpm + mysql + redis, описанный в одном compose.yml. В CI/CD (GitHub Actions) Compose используется для тестовых окружений.

История Docker Compose

Docker Compose создан компанией Orchard (инструмент Fig) в 2013 году. Docker приобрёл Orchard в 2014 году и переименовал продукт в Docker Compose. Формат docker-compose.yml v1 появился в 2015 году, v2 — в 2016 году с поддержкой сетей и volumes. В 2022 году Docker Compose v2 стал плагином для Docker CLI (docker compose без дефиса). Поддерживает Compose Spec, принятый как открытый стандарт. Используется в >60% проектов, развёртываемых на Docker.

Пример docker-compose.yml для LAMP

version: "3.9"
services:
  web:
    image: php:8.2-apache
    ports: ["80:80"]
    volumes: [./src:/var/www/html]
    depends_on: [db]
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    volumes: [db_data:/var/lib/mysql]
volumes:
  db_data:

Типичные ошибки при работе с Docker Compose

  • Хранение паролей в docker-compose.yml в открытом виде — используйте Docker Secrets или .env-файлы.
  • Не указан restart: unless-stopped — сервисы не поднимаются после перезагрузки VPS.
  • Версия Compose file 2.x и 3.x несовместимы по некоторым параметрам (memory limits).
  • Забыть удалить orphan-контейнеры: docker compose up -d --remove-orphans.

Для production Docker Compose используется совместно с Nginx-прокси (nginx-proxy, Traefik) для маршрутизации трафика между контейнерами. Compose-файлы рекомендуется хранить в git-репозитории и деплоить через git deploy.

Другие термины