網(wǎng)站首頁 編程語言 正文
一、前言
這篇文章介紹如何將一個(gè)ASP.NET Core應(yīng)用程序在Docker中進(jìn)行部署。開發(fā)工具使用的是Visual Studio 2019和VS Code。
二、使用Docker部署
我們選擇新建一個(gè)MVC項(xiàng)目進(jìn)行演示。
1、新建MVC項(xiàng)目
模板選擇ASP.NET Core Web應(yīng)用程序,如下圖所示:
輸入項(xiàng)目名稱,點(diǎn)擊“創(chuàng)建”:
選擇Web應(yīng)用程序(模型視圖控制器),并勾選“啟用Docker支持”,如下圖所示:
然后會(huì)檢查Docker環(huán)境是否安裝,如下圖所示:
這樣一個(gè)MVC項(xiàng)目就創(chuàng)建完成了,會(huì)自動(dòng)生成Dockerfile文件:
如果說創(chuàng)建項(xiàng)目的時(shí)候,沒有勾選“啟用Docker支持”,我們也可以在項(xiàng)目創(chuàng)建完成以后在添加Dockerfile文件,在項(xiàng)目上右鍵,選擇“添加”選項(xiàng)下面的“Docker支持”,如下圖所示:
然后選擇Linux系統(tǒng):
這樣也可以添加Dockerfile文件。
最簡(jiǎn)單的創(chuàng)建Dockerfile文件的方式就是新建一個(gè)txt文件,然后重命名為Dockerfile即可。
2、編寫Dockerfile文件
我們看看自動(dòng)生成的Dockerfile文件:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["DockerDemo/DockerDemo.csproj", "DockerDemo/"] RUN dotnet restore "DockerDemo/DockerDemo.csproj" COPY . . WORKDIR "/src/DockerDemo" RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "DockerDemo.dll"]
可以看到這里有build和publish命令,自動(dòng)生成的Dockerfile文件可能會(huì)有一些錯(cuò)誤,所以我們自己編寫一份Dockerfile文件,修改后的Dockerfile文件如下:
# 使用運(yùn)行時(shí)鏡像 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim # 設(shè)置工作目錄 WORKDIR /app # 把目錄下的內(nèi)容都復(fù)制到當(dāng)前目錄下 COPY . . # 暴露80端口 EXPOSE 80 # 運(yùn)行鏡像入口命令和可執(zhí)行文件名稱 ENTRYPOINT ["dotnet", "DockerDemo.dll"]
修改Dockerfile文件的屬性,修改為始終復(fù)制:
這樣能保證Dockerfile可以隨程序一起發(fā)布。
3、生成鏡像
首先發(fā)布程序,程序發(fā)布成功以后,進(jìn)入到發(fā)布目錄,就可以生成鏡像,這里使用PowerShell。使用下面的命令生成鏡像:
docker build -t aspnetcoredocker .
其中aspnetcoredocker是鏡像名稱。
上面命令中最后英文狀態(tài)的.不能省略。
如下圖所示:
如果出現(xiàn)上圖所示的5步都成功,則表示鏡像生成成功了。 我們查看本地的鏡像:
可以看到,已經(jīng)有我們創(chuàng)建的鏡像了。我們也可以直接使用VS Code查看。VS Code需要安裝一個(gè)插件:
安裝完成以后,在左側(cè)就可以看到docker圖標(biāo)了:
使用這個(gè)插件,就可以看到本地當(dāng)前所有的鏡像:
4、運(yùn)行鏡像
上面鏡像構(gòu)建成功以后,我們就可以使用下面的命令來運(yùn)行鏡像:
docker run --name=aspnetcoredocker -p 6666:80 -d aspnetcoredocker
- ?--name?:指定容器名稱。
- ?--p?:指定容器端口。
- ?--d?:指定容器后臺(tái)運(yùn)行。
如下圖所示:
出現(xiàn)下面的一長(zhǎng)串字符串,則說明鏡像運(yùn)行成功??梢允褂孟旅娴拿畈榭凑谶\(yùn)行的容器:
docker ps
如下圖所示:?
可以看到,剛才創(chuàng)建的鏡像已經(jīng)在運(yùn)行。如果想更直觀的查看,可以在VS Code的插件里面查看:
?
綠色的三角表示正在運(yùn)行的容器,紅色的方框表示停止的容器。
5、驗(yàn)證
容器運(yùn)行成功,我們?cè)跒g覽器里面進(jìn)行訪問:
這樣一個(gè)簡(jiǎn)單的示例程序就完成了。
原文鏈接:https://www.cnblogs.com/dotnet261010/p/12450488.html
相關(guān)推薦
- 2022-01-27 SpringBoot成功啟動(dòng)后自動(dòng)關(guān)閉
- 2022-11-20 Python檢測(cè)PE所啟用保護(hù)方式詳解_python
- 2022-06-01 idea對(duì)CPU的占用率過大問題的解決方法_相關(guān)技巧
- 2022-09-26 python中創(chuàng)建一個(gè)包并引用使用的操作方法_python
- 2022-10-12 Xshell7遠(yuǎn)程連接失敗(connection?failed)的問題解決_Linux
- 2023-03-18 RedisTemplate訪問Redis的更好方法_Redis
- 2023-01-19 Python正則表達(dá)式分組_python
- 2022-04-28 WPF簡(jiǎn)介與基礎(chǔ)開發(fā)_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支