ツール

docker run → Docker Compose 変換ツール

docker run コマンドを compose.yaml に変換します。コマンドごとに 1 つのサービスとなり、ポート、ボリューム、環境変数、GPU も移し替えます。

ブラウザ内で実行コード変換3758
無料

入力

0 B

結果

結果はここに表示されます。

プロジェクトの README はたいてい docker run コマンドから始まりますが、Ollama と並べた Open WebUI、データベースと並べたアプリのように複数のコンテナを動かすようになると、compose.yaml のほうがはるかに管理しやすくなります。1 つまたは複数の docker run コマンドを貼り付けると、このツールは composerize.com の裏で動いているオープンソースの変換ツール composerize でそれぞれを変換し、結果を 1 つの Compose ファイルにまとめます。ポート、ボリューム、環境変数、再起動ポリシー、追加ホスト、GPU の予約は、それぞれ該当するサービスの正しいキーの下に入ります。

動作のしくみ

  • 1 行に 1 コマンドを書くか、&& でつなぎます。バックスラッシュによる行継続、先頭の $ プロンプト、sudo、podman run もすべて解釈します。
  • 各サービスの名前にはコンテナの --name を使います。指定がなければイメージ名を使い、名前が重複した場合は -2 の接尾辞を付けて、コンテナが互いに上書きしないようにします。
  • version キーのない現行の Compose ファイル形式か、version: で始まる旧来の 3.x・2.x 形式を選べます。インデントはスペース 2 つか 4 つです。
  • composerize が書き出すプレースホルダーのプロジェクト名は、Compose に拒否されるため削除します。その場合 Compose は、ファイルがあるフォルダーの名前をプロジェクト名にします。

データの行き先

どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。

このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。

必要なポイント

このツールは無料です。ログインもポイントも必要ありません。

よくある質問

名前付きボリュームに external: true が付くのはなぜですか?
docker run の名前付きボリューム(-v ollama:/root/.ollama)は、データが入った状態ですでに存在しているからです。external を付けると、Compose はそのボリュームをそのまま使います。付けないと、Compose はプロジェクト名を接頭辞にした新しい空のボリュームを作ってしまいます。ファイルの上のコメントにもその旨が書かれています。新規に始める場合は external の行を削除すれば、Compose がボリュームを自分で作成します。
--gpus all は引き継がれますか?
はい。driver nvidia、count all、gpu capability を持つ deploy.resources.reservations.devices のエントリーになります。これが Compose で GPU を要求する方法です。docker run の場合とまったく同じく、ホストには NVIDIA Container Toolkit をインストールしておく必要があります。
version: の行は残すべきですか?
現在の Docker では不要です。docker compose (v2) が実装する Compose Specification は version を無視し、廃止されたという警告を表示するため、デフォルトの形式では省いています。3.x や 2.x を選ぶのは、古い docker-compose 1.x や、そのキーを前提とするツールでファイルを読む場合だけにしてください。
変換されないオプションがあった場合は?
composerize はほとんどの docker run オプションに対応していますが、Compose に相当するものがない一部のオプションはファイルに含まれません。特に珍しいフラグを使っている場合は、使う前に結果を元のコマンドと比べてください。また、docker run 自体の要件どおり、イメージ名はすべてのオプションの後に置く必要があります。

背後にあるオープンソース

このツールは composerize/composerize(MIT)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。

composerize/composerize

別の呼び方

  • docker run compose 変換
  • docker run to compose
  • composerize
  • docker コマンド compose 変換
  • docker compose 生成
  • docker run yaml 変換