Docker Init:快速初始化專案環境
在過去,要將一個現有的專案容器化,你必須手動撰寫 Dockerfile、docker-compose.yaml 以及 .dockerignore。對於新手來說,設定正確的參數往往需要花費不少時間查閱文件。
從 Docker Desktop 4.18 版本(以及最新的 Docker v29)開始,官方推出了一個強大的指令:docker init。
什麼是 docker init?
docker init 是一個互動式的指令行工具。它會掃描你的專案目錄,識別出你使用的程式語言,並自動產生該專案所需的 Docker 相關設定檔。
目前支援的語言包括:
- Go
- Node.js
- Python
- Rust
- ASP.NET
- Java
- PHP (以及更多...)
如何使用 docker init?
假設你目前有一個 Node.js 或 Python 專案,請在專案根目錄執行以下指令:
docker init
互動式步驟說明:
執行後,你會進入一個簡單的問答介面:
- Select application platform: 選擇你的程式語言(例如:
Node)。 - Select Node version: 選擇要使用的 Node.js 版本(通常它會自動偵測)。
- Which package manager do you want to use?: 選擇套件管理工具(如
npm,yarn,pnpm)。 - What is the command to run your app?: 輸入啟動專案的指令(例如:
node app.js)。 - What port does your server listen on?: 你的應用程式運作在哪個埠號(例如:
3000)。
完成設定後,docker init 會自動幫你產生四個檔案(如果已存在會詢問是否覆蓋):
- Dockerfile:定義如何建置映像檔。
- docker-compose.yaml:定義如何跑起容器服務(包含資料庫等)。
- .dockerignore:定義哪些檔案不應被打包進映像檔(例如
node_modules)。 - README.Docker.md:一份教學,告訴你如何跑起剛剛產生的配置。
為什麼推薦使用?
- 符合最佳實踐:它產生的檔案內容通常都會包含安全性與效能優化。例如,它會自動使用
Non-root使用者來執行程式,並使用multi-stage build(多階段建置)來縮小映像檔體積。 - 節省時間:你不需要再去複製貼上別人的模板,幾秒鐘就能完成基礎設定。
- 學習參考:對於初學者,閱讀
docker init產生的檔案是學習撰寫高品質Dockerfile的最好方式。
實戰範例:Python 專案
假設你的目錄下有一個 main.py 和 requirements.txt:
# 執行初始化
docker init
# 產生的 Dockerfile 片段預覽:
# 它會自動幫你處理環境變數與工作目錄
FROM python:3.11-slim as base
# ... 中間省略 ...
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]
初始化完成後,你可以直接執行以下指令啟動你的專案:
docker-compose up --build
即使你的專案語言不在清單中,你也可以選擇
Other。它會提供一個基礎的通用模板,讓你再進行微調。docker init 是目前將專案容器化最推薦的起手式。掌握了這個工具後,開發效率將會有顯著的提昇。