您好,登錄后才能下訂單哦!
這篇文章主要講解了“Docker怎么編寫dockerfile啟動node.js應用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker怎么編寫dockerfile啟動node.js應用”吧!
編寫 dockerfile
以 express
自動創(chuàng)建的目錄為例,目錄結構如下:
├── /bin │ └── www ├── /node_modules ├── /public ├── /routes ├── /views ├── package-lock.json ├── package.json ├── ecosystem.config.js ├── app.js └── dockerfile
在項目目錄下新建 dockerfile
文件
from node:10.15 maintainer sunhengzhe@foxmail.com copy . /app/ workdir /app run npm install pm2 -g expose 8003 cmd ["pm2-runtime", "ecosystem.config.js"]
from 指定基礎鏡像為 node 的 10.15 版本(node 官方版本可)
maintainer 說明鏡像的維護者
copy 命令將宿主機的文件拷貝到鏡像中,格式為 copy [--chown=<user>:<group>] <源路徑>... <目標路徑>,這里將項目目錄下的所有文件都拷貝到鏡像中的 /app 目錄下。如果目標路徑不存在,docker 將自動創(chuàng)建。
workdir 用來指定工作目錄,即是 cmd 執(zhí)行所在的目錄。
run 命令用來執(zhí)行 shell 命令,這里用來安裝 pm2
expose 命令用來 聲明 運行時容器提供服務端口,但要注意運行時并不會開啟這個端口的服務。這個命令主要是幫助使用者理解這個鏡像服務的守護端口,以方便配置映射;另外在使用隨機端口映射時,會自動隨機映射 expose 的端口
cmd 是默認的容器主進程的啟動命令
構建鏡像
在項目目錄下執(zhí)行
docker build -t express-app:v1 .
如果構建成功,查看鏡像列表
docker images
應該會輸出鏡像 express-app:v1
運行容器
docker run -d -p 8003:3000 --name="express-app" express-app:v1
docker run
是 docker create
和 docker start
兩個命令的簡寫。
-d
即 --detach
,代表讓容器后臺運行。
-p
指定宿主機和容器的端口映射,左邊為宿主機的端口,右邊為容器的端口,也就是說訪問宿主機的 8003 端口,會映射到容器內的 3000 端口。
--name
設置容器別名,如果不指定,docker 會隨機生成一個名字,比如 tender_swirles
之類的。
執(zhí)行
docker ps
正常展示如下
添加 -a
參數(shù)可以查看所有已啟動容器。
進入容器
如果要進入容器進行操作,執(zhí)行下面命令
docker exec -it express-app bash
-i
與 -t
一般結合使用,-i
啟動交互模式,-t
指定需要分配終端,可以自行嘗試不傳其中一個的效果。
與 exec
類似的還有 attach
命令,命令為 docker attach express-app
,但從這個 stdin 中 exit,會導致容器的停止,所以推薦使用 exec
命令。
關閉操作
停止容器
docker stop express-app
刪除容器
docker rm express-app
如果刪除時容器還在運行,需要加上 -f
參數(shù)
刪除鏡像
docker rmi express-app:v1
感謝各位的閱讀,以上就是“Docker怎么編寫dockerfile啟動node.js應用”的內容了,經(jīng)過本文的學習后,相信大家對Docker怎么編寫dockerfile啟動node.js應用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。