本地使用docker打包部署鏡像的方法
第一次在本地使用docker打包、部署鏡像
首先說(shuō)下我的筆記本系統(tǒng)是MACOS 10.15.4我安裝的docker版本是v19.03.5
一、項(xiàng)目結(jié)構(gòu)如下:這是一個(gè)react項(xiàng)目,打包后的靜態(tài)資源路徑是dist目錄。
1. Dockerfile是一個(gè)用來(lái)構(gòu)建鏡像的文本文件,詳細(xì)介紹可以參考鏈接:Docker Dockerfile
我的Dockerfile內(nèi)容如下:
FROM nginxWORKDIR /usr/src/app/COPY ./docker/nginx.conf /etc/nginx/conf.d/default.confCOPY ./dist /usr/share/nginx/html/EXPOSE 80CMD ['nginx', '-g', 'daemon off;']
Dockerfile中的大寫(xiě)單詞是命令,各個(gè)命令的含義解釋?zhuān)?/p> FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎(chǔ)鏡像。后續(xù)的操作都是基于 nginx。 RUN:用于執(zhí)行后面跟著的命令行命令。有以下倆種格式: WORKDIR:指定工作目錄。用 WORKDIR 指定的工作目錄,會(huì)在構(gòu)建鏡像的每一層中都存在。WORKDIR 指定的工作目錄,必須是提前創(chuàng)建好的。docker build 構(gòu)建鏡像過(guò)程中的,每一個(gè) RUN 命令都是新建的一層。只有通過(guò) WORKDIR 創(chuàng)建的目錄才會(huì)一直存在。 COPY:復(fù)制指令,從上下文目錄中復(fù)制文件或者目錄到容器里指定路徑。 EXPOSE:僅僅只是聲明端口。作用:幫助鏡像使用者理解這個(gè)鏡像服務(wù)的守護(hù)端口,以方便配置映射。在運(yùn)行時(shí)使用隨機(jī)端口映射時(shí),也就是 docker run -P 時(shí),會(huì)自動(dòng)隨機(jī)映射 EXPOSE 的端口。 CMD:類(lèi)似于 RUN 指令,用于運(yùn)行程序,但二者運(yùn)行的時(shí)間點(diǎn)不同:CMD 在docker run 時(shí)運(yùn)行。RUN 是在 docker build。作用:為啟動(dòng)的容器指定默認(rèn)要運(yùn)行的程序,程序運(yùn)行結(jié)束,容器也就結(jié)束。CMD 指令指定的程序可被 docker run 命令行參數(shù)中指定要運(yùn)行的程序所覆蓋。注意:如果 Dockerfile 中如果存在多個(gè) CMD 指令,僅最后一個(gè)生效。
2. docker/nginx.conf
server { listen 80; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; gzip_disable 'MSIE [1-6].'; client_max_body_size 100m; root /usr/share/nginx/html; location / { try_files $uri $uri/ /index.html; } location /api/ { # 此處為后端地址 proxy_pass http://www.XXX.com/; }}三、執(zhí)行docker build命令制作鏡像
我執(zhí)行的命令是:docker build -t mydocker .-t : 為鏡像打一個(gè)tag,tag名稱(chēng)為mydocker不要忘了后面有個(gè)點(diǎn),表示在當(dāng)前路徑下制作鏡像
四、執(zhí)行docker run部署鏡像我執(zhí)行的命令是:docker run -p 80:80 mydocker-p 是指定映射到本機(jī)的端口docker run -p 本機(jī)端口:鏡像端口 鏡像名
五、打開(kāi)localhost:80就可以看到項(xiàng)目啦初次體驗(yàn)docker本地部署,很多原理和docker命令還不太清楚,以后還會(huì)進(jìn)一步學(xué)習(xí)~
補(bǔ)充一個(gè)小問(wèn)題,我今天突然無(wú)法將鏡像推到公司的私有云了,是網(wǎng)絡(luò)環(huán)境有問(wèn)題,就讓同事幫忙推一下。我先將打包好的鏡像保存到本地:
docker save 10.10.10.52:5000/zhanwu-study/prod:4.1.2 > study.tar
然后將生成到當(dāng)前目錄下的study.tar通過(guò)釘釘發(fā)給同事,他下來(lái)study.tar到本地,然后執(zhí)行:
docker load < study.tar
更新一下版本(沒(méi)有生成新的鏡像,兩個(gè)版本是同一個(gè)鏡像):
docker tag 10.10.10.52:5000/zhanwu-study/prod:4.1.2 10.10.10.52:5000/zhanwu-study/prod:4.1.3
然后推到私有云:
docker push 10.10.10.52:5000/zhanwu-study/prod:4.1.3
到此這篇關(guān)于本地使用docker打包部署鏡像的方法的文章就介紹到這了,更多相關(guān)本地docker打包部署鏡像內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. XML在語(yǔ)音合成中的應(yīng)用2. jscript與vbscript 操作XML元素屬性的代碼3. 不要在HTML中濫用div4. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)5. .NET Framework各版本(.NET2.0 3.0 3.5 4.0)區(qū)別6. ASP基礎(chǔ)入門(mén)第四篇(腳本變量、函數(shù)、過(guò)程和條件語(yǔ)句)7. ASP將數(shù)字轉(zhuǎn)中文數(shù)字(大寫(xiě)金額)的函數(shù)8. XML入門(mén)的常見(jiàn)問(wèn)題(三)9. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)10. HTTP協(xié)議常用的請(qǐng)求頭和響應(yīng)頭響應(yīng)詳解說(shuō)明(學(xué)習(xí))
