使用docker打包項目的完整流程記錄(小白可懂)
前言
這并不完全是一個正經(jīng)的教程,而是根據(jù)我的學(xué)習(xí)經(jīng)驗總結(jié)出來的一個模版,大家可以嘗試一下,權(quán)當(dāng)了解一下項目打包的流程。
克隆演示項目
我在我的GitHub倉庫里已經(jīng)上傳了演示項目,大家可以使用以下命令克隆到本地:
git clone git@github.com:Yuanyi362102/learn-docker.git cd learn-docker
編寫Dockerfile文件
Dockerfile文件是用于構(gòu)建鏡像的關(guān)鍵文件,我們在執(zhí)行創(chuàng)建鏡像的指令時,docker會自動尋找指定目錄下的Dockerfile文件,并讀取和執(zhí)行相關(guān)指令。
現(xiàn)在讓我們用VScode打開這個項目,可以看到項目結(jié)構(gòu)如圖所示:
打開Dockerfile文件,查看里面的內(nèi)容如下:
FROM node:11 ADD . /app WORKDIR /app RUN npm install && npm install -g nodemon CMD nodemon app.js
簡單解釋一下。
- FROM語句代表我們要創(chuàng)建的鏡像是基于基礎(chǔ)鏡像Node,版本是11。
- ADD語句代表將當(dāng)前項目的根目錄,也就是TEST目錄添加到容器的/app目錄下
- WORKDIR指定了工作目錄是/app
- RUN代表在容器創(chuàng)建(對應(yīng)docker build階段)的過程中執(zhí)行的命令,
npm install
意思是安裝項目依賴,npm install -g nodemon
意思是全局安裝nodemon,這個工具可以幫助我們在后續(xù)更新項目代碼后無需重啟容器就能直接看到更改效果。 - CMD代表在容器運行時執(zhí)行(對應(yīng)于docker run階段)的命令,意思是運行app.js這個文件
構(gòu)建鏡像
使用下面這行命令構(gòu)建鏡像:
docker build -t my-node-app:v1 .
解釋一下,這條命令的主干其實就是docker build my-nder-app
,意思是構(gòu)建一個叫做“my-node-app”的鏡像,-t
是可選參數(shù)代表創(chuàng)建tag,即創(chuàng)建標(biāo)簽,“:v1
"代表標(biāo)簽為"v1”,最后的".
"代表Docker會從當(dāng)前目錄讀取Dockerfile文件。
創(chuàng)建容器
使用下面這行命令來創(chuàng)建容器:
docker run -p 9564:9000 --name testProject -v path:/app my-node-app:v1
這條指令的核心其實就是docker run my-node-app:v1
, “-p
"代表port,指定容器的9000端口映射到宿主機的9654端口,”--name
"是將創(chuàng)建的鏡像名稱指定為testProject,“-v
"指定掛載的數(shù)據(jù)卷volume,”path
“是你項目的絕對路徑(根據(jù)你的電腦實際情況而定),”:app
"就是將剛才Dockerfile中在容器里創(chuàng)建的app目錄(同時也是工作目錄)映射到數(shù)據(jù)卷,這樣當(dāng)容器關(guān)閉之后,數(shù)據(jù)就可以保存到本地,同時項目在本地的修改也能即時反饋給容器。
檢驗效果
如果你成功創(chuàng)建容器,你的終端將會輸出如圖所示的回顯信息:
打開docker的桌面客戶端(沒有的話可以去安裝一下,安裝鏈接:Docker官網(wǎng)下載地址),可以看到以下畫面:
點擊鏈接,會跳轉(zhuǎn)到項目地址,你將會看到以下畫面
在地址欄,分別嘗試輸入localhost:9564/sayhello
和localhost:9564/sayok
,可以看到如下畫面:
在本地項目里面修改一下項目文件,看是否可以不用重啟容器就生效
再次訪問localhost:9564
,會看到返回的信息已經(jīng)改變(如果你沒有在地址欄重新輸入地址,而是在舊頁面中,要點擊瀏覽器刷新按鈕才會更改)。
尾聲
至此,簡單項目打包的流程就結(jié)束了,事實上真正的項目打包肯定會涉及到多個容器,多個容器項目部署又要用到docker-compose相關(guān)的知識
相關(guān)文章
Docker?Kill/Pause/Unpause命令使用與區(qū)別小結(jié)
本文詳細(xì)介紹了Docker中的三個重要命令,kill、pause和unpause,這些命令在管理和操作運行中的容器時非常有用,具有一定的參考價值,感興趣的可以了解一下2024-03-03Docker拉鏡像報錯error pulling image configuration:
這篇文章主要介紹了Docker拉鏡像報錯error pulling image configuration: unknown blob的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09