實用工具
輸入
結果
結果會顯示在這裡。專案 README 通常從一行 docker run 指令開始,但只要執行的容器不只一個——Open WebUI 搭配 Ollama、應用程式搭配資料庫——compose.yaml 就好維護得多。貼上一個或多個 docker run 指令,這個工具會用 composerize(composerize.com 背後的開源轉換器)逐一轉換,再合併成一個 Compose 檔案:連接埠、磁碟區、環境變數、重新啟動策略、額外主機和 GPU 保留都會放到各自服務下正確的鍵。
它是怎麼運作的
- 每行一個指令,或用 && 串接;反斜線換行接續、開頭的 $ 提示字元、sudo 和 podman run 都能辨識。
- 服務以容器的 --name 命名;沒有 --name 時使用映像檔名稱,名稱重複時會加上 -2 後綴,不會有容器互相覆蓋。
- 可以選擇目前的 Compose 檔案格式(沒有 version 鍵),或以 version: 開頭的舊版 3.x、2.x 格式,縮排為兩個或四個空格。
- composerize 寫入的佔位專案名稱會被移除,因為 Compose 會拒絕它;之後 Compose 會以檔案所在的資料夾為專案命名。
你的資料去了哪裡
哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。
本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。
它要花多少
本工具完全免費,不需要登入,也不消耗點數。
常見問題
- 為什麼我的具名磁碟區被標成 external: true?
- 因為 docker run 使用的具名磁碟區——-v ollama:/root/.ollama——已經存在,裡面有你的資料。標成 external,Compose 就會直接使用這個磁碟區;不標的話,Compose 會另外建立一個加上專案名稱前綴的空磁碟區。檔案上方的註解也說明了這點。如果是全新部署,刪掉 external 那幾行,Compose 就會自行建立磁碟區。
- --gpus all 會轉換過去嗎?
- 會。它會變成 deploy.resources.reservations.devices 底下的一項,driver 為 nvidia、count 為 all、帶有 gpu 能力,這就是 Compose 請求 GPU 的寫法;主機上仍需安裝 NVIDIA Container Toolkit,和使用 docker run 時一樣。
- 要保留 version: 這一行嗎?
- 使用目前的 Docker 就不需要。docker compose(v2)實作的 Compose Specification 會忽略 version,並提示它已經過時,所以預設格式不寫這一行。只有檔案要給舊的 docker-compose 1.x 或需要這個鍵的工具讀取時,才選 3.x 或 2.x。
- 有選項沒被轉換怎麼辦?
- composerize 能對應大多數 docker run 選項,少數在 Compose 裡沒有對應項目的會被略去。使用前請把結果和原本的指令對照一遍,特別是不常見的參數——另外請記得,映像檔名稱必須寫在所有選項之後,docker run 本身也是這樣要求的。
背後的開源專案
本工具執行在 composerize/composerize 之上,以 MIT 授權發布。如果你需要在自己的程式裡實作同樣的能力,直接用這個函式庫。
composerize/composerize也常被稱作
- docker run 轉 compose
- docker run 轉 docker-compose
- composerize
- docker 指令轉 yaml
- docker compose 產生器
- docker-compose.yml 產生