在Docker中部署ASP.NET Core 2.2
⒈新建一个ASP.NET Core2.2 Web程序
因为Windows的Docker和Linux的Docker有所不同,本次测试采用的是Linux的Docker,因此没有勾选启用Docker支持。
尝试运行下项目
⒉创建Dockerfile文件
在项目的根目录下,添加一个Dockerfile文件,注意文件名。
1 #添加基础镜像 2 FROM microsoft/dotnet:2.2-aspnetcore-runtime 3 #容器中系统的工作空间 4 WORKDIR /app 5 #拷贝当前文件夹下的文件到容器中系统的工作空间 6 COPY . /app 7 #设置Docker容器对外暴露的端口 8 EXPOSE 80 9 EXPOSE 443 10 #容器中使用 ["dotnet","系统启动的dll"] 来运行应用程序 11 #使用ENTRYPOINT ["dotnet","系统启动的dll"] 12 #或使用 CMD ["dotnet","系统启动的dll"] 13 ENTRYPOINT ["dotnet", "DockerDemo.dll"]
这里我们需要用到官方的镜像:microsoft/dotnet:2.1-aspnetcore-runtime
如果要尝试更小的镜像,可以试试
microsoft/dotnet:2.1-aspnetcore-runtime-alpine
,这镜像使用了alpine
一款精简版极小的linux,但是随之而来的就是阉割了一些功能,实际使用的时候需要测试,比如国际化支持,它默认在这个镜像里面没有开启,需要配置环境变量来开启。
修改Dockerfile属性
⒊发布应用程序
⒋创建Docker镜像
1 docker build -t dockerdemo:1.0.0 .
⒌运行Docker镜像
1 docker run --name=dockerdemo -d -p 8000:80 -v /home/fanqi/aspnetcore:/app dockerdemo:1.0.0
*我们可以编写 发布+构建 的脚本。
Windows:
文件名:build.bat
1 @echo off 2 3 echo "Windows Docker build" 4 5 cd ../DockerDemo 6 7 dotnet publish -c Release -o ../publish 8 9 cd ../publish 10 11 echo "publish success" 12 13 docker build -t dockerdemo:1.0.0 .
Linux:
文件名:build.sh
1 #!/bin/bash 2 3 echo Linux Docker build 4 5 cd ../DockerDemo 6 7 dotnet publish -c Release -o ../publish 8 9 cd ../publish 10 11 echo publish success 12 13 docker build -t dockerdemo:1.0.0 .
若在linux下执行sh脚本时,遇到错误“-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory“,
请通过vim/vi编辑sh脚本,按:键,输入 set ff=unix
,然后回车、wq保存即可
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/10883097.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!