在Docker中,動態構建圖是一種非常常見的方法。通過動態構建圖,我們可以在構建鏡像時利用命令行參數和環境變量的值來確定鏡像的行為。下面將一步步介紹如何使用Docker構建一個動態執行的鏡像。
# Dockerfile FROM node:14.15.4-alpine # 安裝PM2進程管理器 RUN npm install -g pm2 # 在容器內創建app目錄 WORKDIR /app # 將依賴文件復制到容器中 COPY package*.json ./ # 安裝依賴 RUN npm install # 將源代碼復制到容器中 COPY . . # 在容器中運行的命令,通過環境變量設置啟動文件 CMD ["pm2-runtime", "${ENTRY_POINT:-index.js}"]
上面的Dockerfile定義了一個Node.js應用程序的鏡像,該應用程序能夠啟動一個接受HTTP請求的服務器。通過環境變量ENTRY_POINT,我們可以自定義通過“pm2-runetime”命令啟動應用程序時的啟動文件。如果ENTRY_POINT變量沒有定義,則默認使用“index.js”作為啟動文件。
在構建Docker鏡像時我們可以將ENTRY_POINT變量的值設為“app.js”:
docker build --build-arg ENTRY_POINT=app.js -t my-node-app .
然后,我們可以像往常一樣運行該鏡像:
docker run -p 8080:8080 -it --rm my-node-app
當鏡像運行時,它將在容器中啟動名為“app.js”的Node.js應用程序。