Генератор Docker Compose
Что работает в этом стеке
Писать docker-compose.yml вручную значит помнить точные отступы, ставить кавычки вокруг каждого сопоставления портов и знать, какую строку версии понимает ваш бинарник Compose. Этот генератор позволяет определить службы с помощью простых полей: имени, образа, сопоставлений портов хост:контейнер и томов. На выходе получается корректный YAML-файл по современной спецификации Compose (без ключа версии) с разумными значениями по умолчанию.
Как собрать файл Compose
-
1
Добавьте службы
Задайте каждому сервису имя и образ, а затем проброс портов, тома, переменные окружения и политику перезапуска. Два стартовых сервиса уже заполнены и запускаются как есть.
-
2
Измените или удалите строки
Правьте любое поле напрямую, добавляйте службу кнопкой + Service или удаляйте ненужную строку.
-
3
Проверьте сгенерированный YAML
Проверьте получившийся YAML: порты заключены в кавычки, каждый именованный том объявлен в конце файла, а ключ version опущен, как того ожидает современная спецификация Compose.
-
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 и новее.
Через форму нет. Форма покрывает образ, порты, тома, переменные окружения и политику перезапуска и объявляет все именованные тома, которые монтируют ваши сервисы, как того требует Compose. Сети и health check дописывайте в готовый YAML вручную.
Нет, этот инструмент занимается compose.yml. Для Dockerfile используйте Генератор Dockerfile: он выбирает базовый образ и порядок инструкций COPY/RUN для пяти технологий.
Нет. Определения служб используются только для построения YAML на этой странице. Они не сохраняются, не загружаются и не передаются.
Сопутствующие инструменты
Смешивание цветов
Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Генератор бейджей README
Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.
Генератор случайных адресов
Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.
Конвертер из формата HEX в ASCII
Преобразует последовательности шестнадцатеричных байтов в текст в формате ASCII. Отлично подходит для отладки протоколов, обратного инженеринга и решений задач типа CTF.
Инструмент доступен на других языках
- Docker Composeジェネレーター [JA]
- Docker Compose-generator [NL]
- Generator Docker Compose [ID]
- Generator Docker Compose [PL]
- Gerador de Docker Compose [PT]
- مولّد Docker Compose [AR]
- Generador de Docker Compose [ES]
- Docker Compose-generator [SV]
- Générateur Docker Compose [FR]
- Trình tạo Docker Compose [VI]
- Docker Compose 생성기 [KO]
- Docker-Compose-Generator [DE]
- ตัวสร้าง Docker Compose [TH]
- Docker Compose Oluşturucu [TR]
- Docker Compose 生成器 [ZH]
- Docker Compose Generator [EN]
- Generatore di Docker Compose [IT]