docker run → docker-compose.yml 変換

docker run コマンドを貼り付けると compose.yaml の services 定義に変換。-p/-v/-e/--restart/--network などに対応し、未対応オプションは捨てずにコメントで明示。ports は文字列で正しくクォート。

行末の \ による複数行コマンド、シングル/ダブルクォートを含むコマンド(例:-e MSG="hello world")にも対応しています。未対応のオプション(--gpus など)は変換をやめずに、生成結果の末尾にコメントとして残します。

使い方

  1. 上の欄に docker run ... コマンドを貼り付ける(入力と同時に変換します)。
  2. 行末の \ による複数行コマンドや、クォートで囲んだ値もそのまま貼り付けられます。
  3. 下の欄に services: 定義が出るので、コピーボタンで compose.yaml に貼り付けてください。
  4. 変換できなかったオプションは末尾に # コメントで残るので、手動で確認・追記してください。

仕組み・計算式

ブラウザ内の自作トークナイザで docker run コマンドを分割し、-p/-v/-e/--restart/--network/--mount などを Compose Specification の services.<name> 配下のキー(ports・volumes・environment・restart・networks 等)に対応づけています。サービス名は --name があればそれを、なければイメージ名からタグとレジストリパスを除いた部分を使います。--mount type=bind,source=...,target=... は source:target 形式の volumes に変換しますが、bind-propagation など変換できない属性は捨てずにコメントで残します。--gpus のような対応外オプションも値ごとコメントに残すので、設定漏れに気づけます。

現場の落とし穴:ports: の値をクォートせずに書くと、YAML パーサーによっては 80:80 のような文字列が数値やタイムスタンプ風の値として誤解釈されることがあります。このツールが ports・volumes などコロンを含む値を必ずダブルクォートで出すのはこのためです。また --network を指定すると、その名前を external: true の既存ネットワークとして出力します。Compose 側で新規にネットワークを定義したい場合はここを書き換えてください。

よくある質問

Q. -e KEY のように値を省略した環境変数はどうなりますか?

A. KEY: とだけ出力します。ホスト側の同名環境変数を引き継ぐ、docker run -e KEY と同じ考え方です。

Q. -it や --rm はどこに変換されますか?

A. 変換しません。対話実行や後片付けのための実行時オプションで、compose.yaml の静的設定に対応項目がないため読み飛ばします。

Q. 生成された YAML に version: が無いのはなぜですか?

A. 最新の Compose Specification ではトップレベルの version: は不要とされているため出力していません。

関連ツール

最終更新・根拠の確認日: 2026-09-14 · カテゴリ: 開発・データ