Перейти к содержанию

docker run в Compose

Преобразуйте команду docker run в сервис docker-compose.yml или наоборот.

Входные данные
Выходные данные

docker run в Compose

Вставьте команду docker run, и этот инструмент переписывает её как сервис docker-compose.yml, с образом, портами, томами, переменными окружения, сетью и политикой перезапуска, отображаемыми на эквиваленты compose. Переключите опцию направления и она работает и наоборот: вставьте файл compose и получите эквивалентную команду docker run для каждого сервиса, полезно когда у вас есть только файл compose, но нужно воспроизвести один контейнер вручную.

Вставьте несколько команд docker run, по одной в строку, и каждая станет отдельным сервисом в одном файле compose — удобно для превращения нескольких ad-hoc контейнеров в надлежащий стек с несколькими сервисами. Распознаны переключатели -p/--publish, -v/--volume, -e/--env, --network, --restart, --memory и --cpus (отображаются на блок deploy.resources.limits), а также --name, --workdir, --user, --entrypoint, --label и --hostname. Переменные окружения могут остаться встроены в environment: или быть перемещены в сгенерированный файл .env, на который ссылается env_file:, а формат файла compose может быть написан с ключом version: или без него.

Не каждый флаг docker run имеет эквивалент compose — такие вещи как --rm или --pull — это переключатели жизненного цикла контейнера, которые не имеют параметра compose для каждого сервиса. Инструмент никогда не опускает их молча: неподдерживаемые флаги перечисляются в виде комментариев рядом с сервисом, к которому они принадлежат, поэтому вы видите ровно то, что не было преобразовано. Отключение опции «сохранить порядок флагов» сортирует каждый список (порты, тома, окружение) по алфавиту вместо сохранения порядка, в котором вы их набрали, что может облегчить просмотр сгенерированного diff.

Всё запускается локально в вашем браузере — ни одна команда, имя образа или переменная окружения никогда никуда не отправляются. Скопируйте результат, загрузите как .txt файл или отправьте результат обратно на вход для дальнейшего совершенствования.

FAQ

Могу ли я преобразовать несколько команд docker run одновременно?
Да. Вставьте одну команду docker run в строку (или используйте обратный слеш для продолжения команды на несколько строк) и каждая станет отдельным сервисом в сгенерированном файле compose.
Что происходит с флагами, которые compose не может выразить, такими как --rm?
Они не опускаются молча. Каждый неподдерживаемый флаг перечисляется в виде комментария рядом с сервисом, к которому он принадлежит, поэтому вы знаете точно, что не было преобразовано.
Может ли он также преобразовать docker-compose.yml обратно в команды docker run?
Да. Переключите опцию направления на «compose → docker run» и вставьте файл compose; инструмент выведет одну команду docker run для каждого сервиса.
Почему я должен поместить переменные окружения в отдельный файл .env вместо файла compose?
Это держит секреты и значения для каждого окружения вне системы контроля версий, когда сам файл compose commit'ится. Выберите «отдельный файл .env» и инструмент переместит переменные туда и будет ссылаться на них через env_file:.
Моя команда или файл compose загружается куда-нибудь?
Нет. Преобразование работает полностью в вашем браузере, используя JavaScript — ничто, что вы вставляете, никогда не покидает ваше устройство.