Путь задачи / от ввода к результату
Как преобразовать команду docker run в Compose
- 01
Вставьте команду docker run
Для буквальных команд оболочки POSIX и контейнеров Linux. Не более 64 KiB UTF-8. Файлы окружения raw требуют Compose 2.30+. Это черновик конфигурации: оболочка, демон Docker и образ не запускаются и не проверяются. Используйте одну буквальную команду docker run. Замените переменные хоста явными значениями; буквальный $ заключите в одинарные кавычки или экранируйте. Раскрытие оболочки, конвейеры, перенаправления, подстановка команд и неэкранированные переводы строк не поддерживаются. Продолжение строки обратной косой чертой поддерживается.
- 02
Преобразуйте в сервис Compose
Преобразуются имя, порты, явные значения окружения, файлы raw, монтирования, перезапуск, сеть, рабочий каталог, пользователь, entrypoint и метки. -i/-t (включая -it) задают stdin_open/tty. Короткие параметры принимают присоединённые значения, длинные — =value. Неизвестные параметры останавливают преобразование.
- 03
Проверьте полученный YAML
Аргументы после образа сохраняют порядок и пустые строки в списке command. Непустой entrypoint остаётся одним аргументом, пустой сбрасывает его. Буквальные доллары удваиваются, чтобы Compose не подставлял окружение повторно. Сеть по умолчанию явно задана как bridge. Bind различает -v (может создать каталог хоста) и --mount (путь должен существовать).
- 04
Проверьте список неподдерживаемого
Есть неподдерживаемый параметр. Частичный YAML не создан. Используйте параметры из руководства, а аргументы команды контейнера помещайте после образа. --rm не включается в YAML. Выберите подходящий способ запуска и удаления в Compose самостоятельно. -d/--detach — параметр запуска: при необходимости используйте docker compose up -d.
- 05
Скопируйте или скачайте YAML
env_file использует формат raw (Compose 2.30+), сохраняя доллары и кавычки. Относительные пути отсчитываются от compose.yaml. Содержимое файлов и переменные без значений не проверяются; проверьте реальное окружение. Именованные тома и пользовательские сети задаются как внешние ссылки с исходными именами. Они должны существовать до запуска; здесь ресурсы не создаются и не проверяются.