網站首頁 編程語言 正文
部署.net6項目到docker
【1】新建.net6 mvc或webapi項目;
【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.jb51.net/article/232534.htm
【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 容器名字
原文鏈接:https://www.cnblogs.com/yyee/p/15676770.html
相關推薦
- 2022-06-07 關于python調用c++動態庫dll時的參數傳遞問題_C 語言
- 2022-07-22 React警告:Can‘t perform a React state update on an u
- 2022-04-28 Android?連接藍牙掃碼器無輸入框的實現_Android
- 2022-10-26 Android?audio音頻流數據異常問題解決分析_Android
- 2022-12-16 C++?Boost?EnableIf函數使用介紹_C 語言
- 2022-08-23 python多線程對多核cpu的利用解析_python
- 2022-09-17 c語言實現從源文件從文本到可執行文件經歷的過程_C 語言
- 2022-09-05 Involution: Inverting the Inherence of Convolution
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支