溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何部署.Net6項(xiàng)目到docker

發(fā)布時間:2021-12-21 17:05:34 來源:億速云 閱讀:429 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“如何部署.Net6項(xiàng)目到docker”,在日常操作中,相信很多人在如何部署.Net6項(xiàng)目到docker問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何部署.Net6項(xiàng)目到docker”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

部署.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)部啟動端口,默認(rèn)是80
#ENV ASPNETCORE_URLS http://+:5001

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

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

# 如果用System.SqlClient.dll訪問數(shù)據(jù)庫,需要加這一句
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ù)器的某個文件夾,例如拷貝到【/wwwroot/myproject】文件夾;
【5】安裝docker
【6】安裝.net6鏡像
docker pull mcr.microsoft.com/dotnet/aspnet:6.0
【7】進(jìn)入到centos服務(wù)器的 /wwwroot/myproject 目錄,構(gòu)建一個鏡像,鏡像名格式為【鏡像名:版本號】,比如: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表示鏡像版本號,注意鏡像名后面有個空格 + 英文點(diǎn)號,表示構(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,它不能用域名訪問,所以要創(chuàng)建自定義網(wǎng)絡(luò)。

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

參數(shù)說明:

  • --driver bridge #表示橋接模式

  • --subnet 192.168.0.0/16  #16表示最多支持65535個ip,可以分配192.168.0.2到192.168.255.255,如果沒有指定--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個ip,可以分配192.168..0.2到192.168.0.255

  • --gateway  #表示docker容器的網(wǎng)關(guān)

mynet表示網(wǎng)絡(luò)名

如何部署.Net6項(xiàng)目到docker

在docker 中直接 run 創(chuàng)建容器時不加自定義的網(wǎng)絡(luò),默認(rèn)使用網(wǎng)絡(luò)名為bridge的網(wǎng)絡(luò),這是docker0網(wǎng)絡(luò),容器之間無法使用容器名相互ping通,只能通過ip相互ping通。

我們自己定義的網(wǎng)絡(luò),容器之間是可以直接通過容器名相互ping通的。

查看mynet網(wǎng)絡(luò)的詳細(xì)信息:

docker network inspect mynet
【9】創(chuàng)建并運(yùn)行容器

創(chuàng)建容器格式:

docker run -d --name 容器名 -p 外部端口號:docker容器端口號 --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)建容器(多了個 --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ù)說明:

  • -d #后臺運(yùn)行

  • -p 8001:80 #縮主機(jī)端口號:docker端口號

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

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

  • --net mynet      #指定網(wǎng)絡(luò)名

查看正在運(yùn)行的容器:

docker ps

查看所有容器:

docker ps -a
【10】訪問容器

訪問方式:http://宿主機(jī)ip:端口號

http://192.168.1.200:8002

進(jìn)入到容器

【11】進(jìn)入到容器
docker exec -it my-dotnet6-demo01 /bin/bash

容器設(shè)置

給已有容器設(shè)置開機(jī)自動啟動

docker update --restart=always 容器名字

取消容器開機(jī)自動啟動

docker update --restart=no 容器名字

到此,關(guān)于“如何部署.Net6項(xiàng)目到docker”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI