這篇文章主要講解了“Docker怎么編寫dockerfile啟動(dòng)node.js應(yīng)用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Docker怎么編寫dockerfile啟動(dòng)node.js應(yīng)用”吧!
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)泰安,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
編寫 dockerfile
以 express
自動(dòng)創(chuàng)建的目錄為例,目錄結(jié)構(gòu)如下:
├── /bin │ └── www ├── /node_modules ├── /public ├── /routes ├── /views ├── package-lock.json ├── package.json ├── ecosystem.config.js ├── app.js └── dockerfile
在項(xiàng)目目錄下新建 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 指定基礎(chǔ)鏡像為 node 的 10.15 版本(node 官方版本可)
maintainer 說(shuō)明鏡像的維護(hù)者
copy 命令將宿主機(jī)的文件拷貝到鏡像中,格式為 copy [--chown=
workdir 用來(lái)指定工作目錄,即是 cmd 執(zhí)行所在的目錄。
run 命令用來(lái)執(zhí)行 shell 命令,這里用來(lái)安裝 pm2
expose 命令用來(lái) 聲明 運(yùn)行時(shí)容器提供服務(wù)端口,但要注意運(yùn)行時(shí)并不會(huì)開(kāi)啟這個(gè)端口的服務(wù)。這個(gè)命令主要是幫助使用者理解這個(gè)鏡像服務(wù)的守護(hù)端口,以方便配置映射;另外在使用隨機(jī)端口映射時(shí),會(huì)自動(dòng)隨機(jī)映射 expose 的端口
cmd 是默認(rèn)的容器主進(jìn)程的啟動(dòng)命令
構(gòu)建鏡像
在項(xiàng)目目錄下執(zhí)行
docker build -t express-app:v1 .
如果構(gòu)建成功,查看鏡像列表
docker images
應(yīng)該會(huì)輸出鏡像 express-app:v1
運(yùn)行容器
docker run -d -p 8003:3000 --name="express-app" express-app:v1
docker run
是 docker create
和 docker start
兩個(gè)命令的簡(jiǎn)寫。
-d
即 --detach
,代表讓容器后臺(tái)運(yùn)行。
-p
指定宿主機(jī)和容器的端口映射,左邊為宿主機(jī)的端口,右邊為容器的端口,也就是說(shuō)訪問(wèn)宿主機(jī)的 8003 端口,會(huì)映射到容器內(nèi)的 3000 端口。
--name
設(shè)置容器別名,如果不指定,docker 會(huì)隨機(jī)生成一個(gè)名字,比如 tender_swirles
之類的。
執(zhí)行
docker ps
正常展示如下
添加 -a
參數(shù)可以查看所有已啟動(dòng)容器。
進(jìn)入容器
如果要進(jìn)入容器進(jìn)行操作,執(zhí)行下面命令
docker exec -it express-app bash
-i
與 -t
一般結(jié)合使用,-i
啟動(dòng)交互模式,-t
指定需要分配終端,可以自行嘗試不傳其中一個(gè)的效果。
與 exec
類似的還有 attach
命令,命令為 docker attach express-app
,但從這個(gè) stdin 中 exit,會(huì)導(dǎo)致容器的停止,所以推薦使用 exec
命令。
關(guān)閉操作
停止容器
docker stop express-app
刪除容器
docker rm express-app
如果刪除時(shí)容器還在運(yùn)行,需要加上 -f
參數(shù)
刪除鏡像
docker rmi express-app:v1
感謝各位的閱讀,以上就是“Docker怎么編寫dockerfile啟動(dòng)node.js應(yīng)用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Docker怎么編寫dockerfile啟動(dòng)node.js應(yīng)用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!