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