部署.Net6項(xiàng)目到docker
部署.net6項(xiàng)目到docker
【1】新建.net6 mvc或webapi項(xiàng)目;
【2】在mvc或webapi項(xiàng)目的根目錄下創(chuàng)建Dockerfile文件,并設(shè)置為始終復(fù)制;
Dockerfile文件內(nèi)容為:
#添加.net6基礎(chǔ)鏡像 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base #容器工作目錄 WORKDIR /app #指定項(xiàng)webapi或mvc站點(diǎn)的內(nèi)部啟動(dòng)端口,默認(rèn)是80 #ENV ASPNETCORE_URLS http://+:5001 #暴露docker容器端口 #EXPOSE 8001 #EXPOSE 443 #拷貝發(fā)布目錄下的所有文件到容器的工作根目錄 #COPY . . (這樣寫也可以) COPY ./ ./ # 如果用System.SqlClient.dll訪問(wèn)數(shù)據(jù)庫(kù),需要加這一句 RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf #容器入口點(diǎn) ENTRYPOINT ["dotnet", "dotnet6Demo.web.dll"]
【3】發(fā)布mvc或webapi項(xiàng)目;
【4】將發(fā)布后的mvc或webapi項(xiàng)目拷貝到centos服務(wù)器的某個(gè)文件夾,例如拷貝到【/wwwroot/myproject】文件夾;
【5】安裝docker
安裝方法參考:http://www.dbjr.com.cn/article/232534.htm
【6】安裝.net6鏡像
docker pull mcr.microsoft.com/dotnet/aspnet:6.0
【7】進(jìn)入到centos服務(wù)器的 /wwwroot/myproject 目錄,構(gòu)建一個(gè)鏡像,鏡像名格式為【鏡像名:版本號(hào)】,比如:dotnet6-demo:0.0.1
構(gòu)建鏡像命令:
cd /wwwroot/myproject docker build -t dotnet6-demo:0.0.1 .
dotnet6-demo 表示構(gòu)建的鏡像名稱,:0.0.1表示鏡像版本號(hào),注意鏡像名后面有個(gè)空格 + 英文點(diǎn)號(hào),表示構(gòu)建當(dāng)前路徑下的文件
。
上面這條命令是用默認(rèn)配置文件名 Dockerfile 構(gòu)建的鏡像,如果用自定義配置文件名構(gòu)建鏡像,需要加 -f 參數(shù)。
docker build -f Dockerfile02 -t dotnet6-demo:0.0.1 .
【8】創(chuàng)建自定義網(wǎng)絡(luò)
默認(rèn)網(wǎng)絡(luò)docker0,它不能用域名訪問(wèn),所以要?jiǎng)?chuàng)建自定義網(wǎng)絡(luò)。
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
參數(shù)說(shuō)明:
- --driver bridge #表示橋接模式
- --subnet 192.168.0.0/16 #16表示最多支持65535個(gè)ip,可以分配192.168.0.2到192.168.255.255,如果沒(méi)有指定--subnet參數(shù)默認(rèn)網(wǎng)段為172.17.0.0/16,默認(rèn)網(wǎng)關(guān)為172.17.0.1;
- --subnet 192.168.0.0/24 #24表示最多支持254個(gè)ip,可以分配192.168..0.2到192.168.0.255
- --gateway #表示docker容器的網(wǎng)關(guān)
mynet表示網(wǎng)絡(luò)名
在docker 中直接 run 創(chuàng)建容器時(shí)不加自定義的網(wǎng)絡(luò),默認(rèn)使用網(wǎng)絡(luò)名為bridge的網(wǎng)絡(luò),這是docker0網(wǎng)絡(luò),容器之間無(wú)法使用容器名相互ping通,只能通過(guò)ip相互ping通。
我們自己定義的網(wǎng)絡(luò),容器之間是可以直接通過(guò)容器名相互ping通的。
查看mynet網(wǎng)絡(luò)的詳細(xì)信息:
docker network inspect mynet
【9】創(chuàng)建并運(yùn)行容器
創(chuàng)建容器格式:
docker run -d --name 容器名 -p 外部端口號(hào):docker容器端口號(hào) --restart=always -v /宿主機(jī)目錄 : /容器目錄 鏡像名
使用默認(rèn)網(wǎng)絡(luò) docker0 創(chuàng)建容器(生產(chǎn)環(huán)境不推薦
):
docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload dotnet6-demo:0.0.1
使用自定義網(wǎng)絡(luò)創(chuàng)建容器(多了個(gè) --net 參數(shù)):
docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload --net mynet dotnet6-demo:0.0.1
參數(shù)說(shuō)明:
- -d #后臺(tái)運(yùn)行
- -p 8001:80 #縮主機(jī)端口號(hào):docker端口號(hào)
- -v #數(shù)據(jù)卷路徑,格式:(-v /宿主機(jī)目錄:容器目錄)或者(-v /容器目錄),可以帶多個(gè) -v 參數(shù)。
- --restart=always #dokcer重新啟動(dòng)時(shí)也將容器自動(dòng)啟動(dòng)
- --net mynet #指定網(wǎng)絡(luò)名
查看正在運(yùn)行的容器:
docker ps
查看所有容器:
docker ps -a
【10】訪問(wèn)容器
訪問(wèn)方式:http://宿主機(jī)ip:端口號(hào)
http://192.168.1.200:8002
進(jìn)入到容器
【11】進(jìn)入到容器
docker exec -it my-dotnet6-demo01 /bin/bash
容器設(shè)置
給已有容器設(shè)置開機(jī)自動(dòng)啟動(dòng)
docker update --restart=always 容器名字
取消容器開機(jī)自動(dòng)啟動(dòng)
docker update --restart=no 容器名字
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- .NET 5 部署在docker上運(yùn)行的方法
- Linux系統(tǒng)Docker 部署 ASP.NET Core應(yīng)用的流程分析
- Docker部署Mysql,.Net6,Sqlserver等容器
- ASP.NET Core開發(fā)Docker部署
- .Net?Core部署Docker容器
- 使用Docker部署ASP.NET?Core程序
- .Net項(xiàng)目在Docker容器中開發(fā)部署
- .NET?6?從0到1使用Docker部署至Linux環(huán)境超詳細(xì)教程
- Linux系統(tǒng)docker部署.net?core3.1的詳細(xì)步驟
- .NET?8?部署到?Docker的詳細(xì)過(guò)程
- .Net8項(xiàng)目使用docker、docker-compose部署的圖文步驟
相關(guān)文章
ASP.NET Core應(yīng)用程序配置文件AppSetting.json
這篇文章介紹了ASP.NET Core應(yīng)用程序配置文件AppSetting.json,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02.Net行為型設(shè)計(jì)模式之中介者模式(Mediator)
這篇文章介紹了.Net行為型設(shè)計(jì)模式之中介者模式(Mediator),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05.Net行為型設(shè)計(jì)模式之狀態(tài)模式(State)
這篇文章介紹了.Net行為型設(shè)計(jì)模式之狀態(tài)模式(State),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05利用C#遠(yuǎn)程存取Access數(shù)據(jù)庫(kù)
目前,基于數(shù)據(jù)庫(kù)服務(wù)器的桌面管理程序和Web程序已經(jīng)有太多的應(yīng)用了,尤其是網(wǎng)絡(luò)的大量普及,孤立地?cái)?shù)據(jù)庫(kù)管理系統(tǒng)無(wú)法勝任分布式管理應(yīng)用,但是面對(duì)基于Access數(shù)據(jù)庫(kù)的現(xiàn)有的桌面應(yīng)用我們也無(wú)法完全的摒棄。我們利用.Net 遠(yuǎn)程處理功能將連接和存取Access的行為封裝為一個(gè)遠(yuǎn)程對(duì)象,供網(wǎng)絡(luò)中其它客戶端通過(guò)調(diào)用該遠(yuǎn)程對(duì)象來(lái)存取實(shí)際的Access數(shù)據(jù)庫(kù)。我們以 C# 2005 為開發(fā)語(yǔ)言來(lái)實(shí)現(xiàn)上述功能。2008-04-04ASP.NET Core應(yīng)用啟動(dòng)Startup類簡(jiǎn)介
這篇文章介紹了ASP.NET Core中的應(yīng)用啟動(dòng)Startup類,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04