將.net6(.netcore)項目部署到docker


部署.net6項目到docker

 

【1】新建.net6 mvc或webapi項目;

使用 visual studio新建一個mvc項目,項目取名為:dotnet6Demo

【2】在mvc或webapi項目的根目錄下創建Dockerfile文件,並設置為始終復制;

Dockerfile文件內容為:

#添加.net6基礎鏡像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#容器工作目錄
WORKDIR /app

#指定項webapi或mvc站點的內部啟動端口,默認是80
#ENV ASPNETCORE_URLS http://+:5001

#暴露docker容器端口
#EXPOSE 8001
#EXPOSE 443

#拷貝發布目錄下的所有文件到容器的工作根目錄
#COPY . . (這樣寫也可以)
COPY ./ ./

# 如果用System.SqlClient.dll訪問數據庫,需要加這一句
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf

#容器入口點
ENTRYPOINT ["dotnet", "dotnet6Demo.web.dll"]

 

【3】發布mvc或webapi項目;

4】將發布后的mvc或webapi項目拷貝到centos服務器的某個文件夾,例如拷貝到【/wwwroot/myproject】文件夾;

【5】安裝docker

安裝方法參考:https://www.cnblogs.com/yyee/p/15642801.html

【6】安裝.net6鏡像

docker pull mcr.microsoft.com/dotnet/aspnet:6.0

【7】進入到centos服務器的 /wwwroot/myproject 目錄,構建一個鏡像,鏡像名格式為【鏡像名:版本號】,比如:dotnet6-demo:0.0.1

構建鏡像命令:

cd /wwwroot/myproject
docker build -t dotnet6-demo:0.0.1 .

dotnet6-demo 表示構建的鏡像名稱,:0.0.1表示鏡像版本號,注意鏡像名后面有個空格 + 英文點號,表示構建當前路徑下的文件。

上面這條命令是用默認配置文件名 Dockerfile 構建的鏡像,如果用自定義配置文件名構建鏡像,需要加 -f 參數。

docker build -f Dockerfile02 -t dotnet6-demo:0.0.1 .

【8】創建自定義網絡

默認網絡docker0,它不能用域名訪問,所以要創建自定義網絡。

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

參數說明:

--driver bridge #表示橋接模式
--subnet 192.168.0.0/16 #16表示最多支持65535個ip,可以分配192.168.0.2到192.168.255.255,如果沒有指定--subnet參數默認網段為172.17.0.0/16,默認網關為172.17.0.1;
--subnet 192.168.0.0/24 #24表示最多支持254個ip,可以分配192.168..0.2到192.168.0.255
--gateway #表示docker容器的網關
mynet表示網絡名

 

在docker 中直接 run 創建容器時不加自定義的網絡,默認使用網絡名為bridge的網絡,這是docker0網絡,容器之間無法使用容器名相互ping通,只能通過ip相互ping通。

我們自己定義的網絡,容器之間是可以直接通過容器名相互ping通的。

 查看mynet網絡的詳細信息:

docker network inspect mynet

 

【9】創建並運行容器

創建容器格式:

docker run -d --name  容器名  -p  外部端口號:docker容器端口號  --restart=always  -v  /宿主機目錄 : /容器目錄  鏡像名

使用默認網絡 docker0 創建容器(生產環境不推薦):

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

使用自定義網絡創建容器(多了個 --net 參數):

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

參數說明:

-d                   #后台運行

-p 8001:80    #縮主機端口號 : docker端口號

-v                  #數據卷路徑,格式:(-v  /宿主機目錄 : 容器目錄)或者(-v  /容器目錄),可以帶多個 -v 參數。

--restart=always     #dokcer重新啟動時也將容器自動啟動

--net mynet            #指定網絡名

 

查看正在運行的容器:

docker ps

查看所有容器:

docker ps -a

 

【10】訪問容器

訪問方式:http://宿主機ip:端口號

http://192.168.1.200:8002

進入到容器

 

【11】進入到容器

docker exec -it my-dotnet6-demo01 /bin/bash

 

容器設置

給已有容器設置開機自動啟動

docker update --restart=always 容器名字

 

取消容器開機自動啟動

docker update --restart=no 容器名字

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM