Генератор Docker Compose

Писать docker-compose.yml вручную значит помнить точные отступы, ставить кавычки вокруг каждого сопоставления портов и знать, какую строку версии понимает ваш бинарник Compose. Этот генератор позволяет определить службы с помощью простых полей: имени, образа, сопоставлений портов хост:контейнер и томов. На выходе получается корректный YAML-файл по современной спецификации Compose (без ключа версии) с разумными значениями по умолчанию.

Как собрать файл Compose

  1. 1

    Добавьте службы

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

  2. 2

    Измените или удалите строки

    Правьте любое поле напрямую, добавляйте службу кнопкой + Service или удаляйте ненужную строку.

  3. 3

    Проверьте сгенерированный YAML

    Предпросмотр обновляется во время ввода: сопоставления портов берутся в кавычки, а ключ версии опускается, как требует современная спецификация Compose.

  4. 4

    Скопируйте файл

    Скопируйте сгенерированный docker-compose.yml и вставьте его в корень проекта.

Современная спецификация Compose

Compose V2 (плагин, поставляемый с Docker Desktop и современными Docker Engine) следует Compose Specification. Ключ version: устарел; генератор его опускает. Ключи верхнего уровня: services, networks, volumes, configs и secrets.

Анатомия службы

Служба, близкая к продакшену, выглядит так:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Тома: bind mount или именованный том

  • Bind mount (./app:/var/www) привязывает контейнер к пути на хосте; отлично подходит для локальной разработки, потому что изменения видны сразу.
  • Именованный том (pgdata:/var/lib/postgresql/data) управляется Docker и хранится независимо от путей на хосте; правильный выбор для баз данных и всего, что вы не хотите случайно удалить с помощью rm -rf.
  • Анонимный том - избегайте. Он переживает перезапуски, но исчезает без предупреждения при docker compose down -v.

Сети

По умолчанию Compose создаёт сеть с именем проекта и подключает к ней каждую службу. Явные сети полезно объявлять, когда:

  • нужно изолировать базу данных от службы, открытой наружу;
  • нужен мост со своей подсетью, чтобы согласовать его с существующей инфраструктурой;
  • нужно подключить контейнеры к уже существующей внешней сети (external: true).

Частые ошибки, которых стоит избегать

  • Конфликты ключа версии. version: "3.8" в начале мешает новым функциям, таким как start_interval в healthcheck, работать в старом Compose; генератор опускает ключ версии.
  • Кавычки вокруг портов. 8080:80 в некоторых крайних случаях интерпретируется как YAML-число в шестидесятеричной системе (base-60); генератор всегда берёт сопоставления портов в кавычки.
  • Секреты прямо в коде. Секреты, записанные прямо в compose.yml, попадают в git. Храните их в env_file или в хранилище секретов платформы.
  • depends_on без условия. Простой depends_on: [db] ждёт запуска контейнера, а не готовности службы. Используйте condition: service_healthy и добавьте healthcheck зависимой службе.

Часто задаваемые вопросы

На текущую Compose Specification (в соответствии с Docker Compose V2). Файл опускает ключ version: - так пишут современные файлы Compose. Он работает с Docker Compose V2.22 и новее.

В этой версии через форму нельзя. Генератор сосредоточен на определениях служб с образом, портами и томами. Сети, переменные среды, healthcheck и другие ключи можно добавить в сгенерированный YAML вручную перед использованием.

Нет, этот инструмент занимается compose.yml. Для Dockerfile используйте Генератор Dockerfile: он выбирает базовый образ и порядок инструкций COPY/RUN для пяти технологий.

Нет. Определения служб используются только для построения YAML на этой странице. Они не сохраняются, не загружаются и не передаются.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Инструмент доступен на других языках