nginx部署php和vue等多個(gè)項(xiàng)目(nginx部署多個(gè)網(wǎng)站)
Docker是現(xiàn)在比較流行的開源容器引擎,有了它讓我們部署和維護(hù)系統(tǒng)更加方便,它 本質(zhì)上是一個(gè)精簡(jiǎn)版的linux系統(tǒng),所以它支持.NET跨平臺(tái)部署。.NET6是微軟最新發(fā)布的.NET版本,跟前面版本相比速度更快、支持熱更新、支持http3等特征。本文介紹如何把.NET 6快速部署到Docker,只需要三個(gè)步驟。
第一步 .NET項(xiàng)目準(zhǔn)備
首先新建一個(gè).NET6的項(xiàng)目,創(chuàng)建項(xiàng)目時(shí),在“其他信息”選項(xiàng)中選擇“啟用Docker”。創(chuàng)建項(xiàng)目后會(huì)自動(dòng)生成一個(gè)Dockerfile文件,這個(gè)文件就是創(chuàng)建Docker鏡像的配置文件。 Dockerfile文件也是必要條件,微軟官方已經(jīng)給你配置好了,文章后面有說明。
如果要在windows環(huán)境下預(yù)覽這個(gè)項(xiàng)目的話,需要注釋掉Properties文件夾下launchSettings.json文件里的docker支持。如下
第二步 執(zhí)行生成鏡像命令
把創(chuàng)建好的項(xiàng)目文件(是整個(gè)項(xiàng)目)用工具拷貝到裝有Docker-ce環(huán)境下的centos網(wǎng)站文件夾下。并cd進(jìn)入這個(gè)文件夾。執(zhí)行如下命令:
展開全文
結(jié)果會(huì)提示成功信息:
這個(gè)過程主要是根據(jù) Dockerfile文件的配置生成項(xiàng)目并copy到docker創(chuàng)建名為 imagesname、版本號(hào)為1.0的鏡像。
這有兩個(gè),一個(gè)是未加版本號(hào)的,一個(gè)是加了版本號(hào)創(chuàng)建的。
第三步 執(zhí)行命令創(chuàng)建網(wǎng)站容器
鏡像創(chuàng)建完成后就可以創(chuàng)建并運(yùn)行容器了。默認(rèn)是80端口,我們這里指定外網(wǎng)訪問5000端口( -p 5000:80),容器名稱是mycontaintest1( --name=mycontaintest1),鏡像是imagesname1.0版本( imagesname:1.0)
這樣我們通過三步完成了把.NET6部署到Docker上了,我們還可以使用Nginx對(duì)它做反向代理供外網(wǎng)訪問,大家可以嘗試一下。
我們來看看效果:
注意:必須 Docker環(huán)境和Centos端口環(huán)境沒有問題的情況下部署,否則會(huì)走很多彎路哦。
Docker相關(guān)知識(shí)點(diǎn)
1、dockerfile常用命令解析
FROM
基礎(chǔ)鏡像,F(xiàn)ROM 命令必須是 Dockerfile 的首個(gè)命令
也就是繼承那個(gè)鏡像
LABEL
為鏡像生成元數(shù)據(jù)標(biāo)簽信息
原有指令 MAINTAINER 已經(jīng)放棄使用,用 LABEL maintainer="你的郵箱" 替代
USER
指定運(yùn)行容器時(shí)的用戶名或 UID,后續(xù) RUN 也會(huì)使用指定用戶
VOLUME
定義匿名卷,容器運(yùn)行時(shí)應(yīng)該盡量保持容器存儲(chǔ)層不發(fā)生寫操作,為了防止運(yùn)行時(shí)用戶忘記將動(dòng)態(tài)文件保存的目錄掛載為卷,可以事先指定某些目錄掛載為匿名卷。這樣就不會(huì)向容器存儲(chǔ)層寫入大量數(shù)據(jù)
WORKDIR
用于設(shè)置 CMD 指明的命令的運(yùn)行目錄
為后續(xù)的 RUN、CMD、ENTRYPOINT、ADD 指令配置工作目錄。可以使用多個(gè) WORKDIR 指令,后續(xù)命令如果參數(shù)是相對(duì)路徑,則會(huì)基于之前命令指定的路徑。使用 docker exec -it 進(jìn)入容器后,默認(rèn)也會(huì)進(jìn)入到 WORKDIR 指定的目錄
容器啟動(dòng)時(shí)的?作?錄
ENV
指定容器啟動(dòng)時(shí)的環(huán)境變量(注意,只有在容器啟動(dòng)時(shí),啟動(dòng)腳本能讀取到,如果希望其他用戶登錄到容器也生效的話,需要寫入 .bashrc)
設(shè)置鏡像內(nèi)的環(huán)境變量
COPY
COPY 命令有兩個(gè)參數(shù),源和目標(biāo)。它的基本作用是從源系統(tǒng)的文件系統(tǒng)上復(fù)制文件到目標(biāo)容器的文件系統(tǒng)
EXPOSE
指定端口轉(zhuǎn)發(fā)
CMD
設(shè)置容器創(chuàng)建是執(zhí)行的默認(rèn)命令
支持三種格式,默認(rèn)會(huì)被 docker run 指定的參數(shù)覆蓋。每個(gè)容器只能執(zhí)行一條 CMD 命令。執(zhí)行的命令和參數(shù)當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起效
CMD [“executable”, “參數(shù)1”,“參數(shù)2”]:使用 exec 方式執(zhí)行,推薦
CMD command 參數(shù)1 參數(shù)2:shell 方式執(zhí)行
CMD [“參數(shù)1”,“參數(shù)2”]:提供給 ENTRYPOINT 做默認(rèn)參數(shù)
啟動(dòng)容器時(shí)執(zhí)行的shell命令
ENTRYPOINT
指定容器的“入口”
支持兩種格式,默認(rèn)不會(huì)被 docker run 指定的參數(shù)覆蓋??梢灾付?--entrypoint 參數(shù)去覆蓋。每個(gè) Dockerfile 中只能有一個(gè) ENTRYPOINT,當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起效
ENTRYPOINT [“executable”, “參數(shù)1”,“參數(shù)2”]:使用 exec 方式執(zhí)行
推薦 - ENTRYPOINT command 參數(shù)1 參數(shù)2:shell 方式執(zhí)行
指定容器啟動(dòng)腳本
HEALTHCHECK
Docker 1.12版本后引入的判斷容器運(yùn)行狀態(tài)是否正常
ADD
將?作?錄下的某個(gè)?錄或者?件copy到鏡像的某個(gè)路徑下
ARG
構(gòu)建環(huán)境的環(huán)境變量
RUN
RUN 命令是 Dockerfile 執(zhí)行命令的核心部分。它接受命令作為參數(shù)并用于創(chuàng)建鏡像。每條 RUN 命令在當(dāng)前基礎(chǔ)鏡像上執(zhí)行,并且會(huì)提交一個(gè)新鏡像
執(zhí)?shell 命令
2、build 命令用于使用 Dockerfile 創(chuàng)建鏡像
語法
docker build [OPTIONS] PATH | URL | -
OPTIONS說明:
--build-arg=[] :設(shè)置鏡像創(chuàng)建時(shí)的變量;
--cpu-shares :設(shè)置 cpu 使用權(quán)重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配額;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的內(nèi)存 id;
--disable-content-trust :忽略校驗(yàn),默認(rèn)開啟;
-f :指定要使用的Dockerfile路徑;
--force-rm :設(shè)置鏡像過程中刪除中間容器;
--isolation :使用容器隔離技術(shù);
--label=[] :設(shè)置鏡像使用的元數(shù)據(jù);
-m :設(shè)置內(nèi)存最大值;
--memory-swap :設(shè)置Swap的最大值為內(nèi)存+swap,"-1"表示不限swap;
--no-cache :創(chuàng)建鏡像的過程不使用緩存;
--pull :嘗試去更新鏡像的新版本;
--quiet, -q :安靜模式,成功后只輸出鏡像 ID;
--rm :設(shè)置鏡像成功后刪除中間容器;
--shm-size :設(shè)置/dev/shm的大小,默認(rèn)值是64M;
--ulimit :Ulimit配置。
--tag, -t: 鏡像的名字及標(biāo)簽,通常 name:tag 或者 name 格式;可以在一次構(gòu)建中為一個(gè)鏡像設(shè)置多個(gè)標(biāo)簽。
--network: 默認(rèn) default。在構(gòu)建期間設(shè)置RUN指令的網(wǎng)絡(luò)模式
實(shí)例
使用當(dāng)前目錄的 Dockerfile 創(chuàng)建鏡像,標(biāo)簽為 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 .
使用URL github.com/creack/docker-firefox 的 Dockerfile 創(chuàng)建鏡像。
docker build github.com/creack/docker-firefox
也可以通過 -f Dockerfile 文件的位置:
$ docker build -f /path/to/a/Dockerfile .
3、run 創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
語法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項(xiàng);
-d: 后臺(tái)運(yùn)行容器,并返回容器ID;
-i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-p: 端口映射,格式為:主機(jī)(宿主)端口:容器端口
-t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;
--name="nginx-lb": 為容器指定一個(gè)名稱;
--dns 8.8.8.8: 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默認(rèn)和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 設(shè)置環(huán)境變量;
--env-file=[]: 從指定文件讀入環(huán)境變量;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運(yùn)行;
-m :設(shè)置容器使用內(nèi)存最大值;
--net="bridge": 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;
--link=[]: 添加鏈接到另一個(gè)容器;
--expose=[]: 開放一個(gè)端口或一組端口
實(shí)例
使用docker鏡像nginx:latest以后臺(tái)模式啟動(dòng)一個(gè)容器,并將容器命名為mynginx。
docker run --name mynginx -d nginx:latest
使用鏡像nginx:latest以后臺(tái)模式啟動(dòng)一個(gè)容器,并將容器的80端口映射到主機(jī)隨機(jī)端口。
docker run -P -d nginx:latest
使用鏡像 nginx:latest,以后臺(tái)模式啟動(dòng)一個(gè)容器,將容器的 80 端口映射到主機(jī)的 80 端口,主機(jī)的目錄 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
參考1:https://www.runoob.com/
參考2:https://www.cnblogs.com/Durant0420/p/15486849.html
結(jié)語
本文講述了.net6部署到docker的簡(jiǎn)單過程,僅供參考,真正項(xiàng)目部署還有很多知識(shí)點(diǎn),這里就不再講了。其實(shí)也可以把.NET項(xiàng)目打包后部署,只需要修改Dockerfile的配置就可以了,大家可以嘗試一下。希望本文對(duì)大家學(xué)習(xí)和工作有一定參考價(jià)值,同時(shí)歡迎大家留言討論,謝謝大家的支持。
版權(quán)聲明:本文來源于網(wǎng)友收集或網(wǎng)友提供,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請(qǐng)轉(zhuǎn)告版主或者留言,本公眾號(hào)立即刪除。
支持小薇
騰訊云福利 :
云服務(wù)器入門體驗(yàn)低至6.6元/月,更多瀏覽
鏈接:https://curl.qcloud.com/1VVs7OBH
關(guān)注: DotNet開發(fā)跳槽
覺得不錯(cuò),請(qǐng)點(diǎn)個(gè)在看 呀
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由河南新鄉(xiāng)捷東實(shí)業(yè)有限公司發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。