ASP.NET Core 2.1 使用Docker运行
重要提示,本文为 ASP.NET Core 2.1 如果你是 2.2 那么请将文中的镜像换为
microsoft/dotnet:2.2.0-aspnetcore-runtime
,3.0mcr.microsoft.com/dotnet/core/aspnet:3.0
,,3.1mcr.microsoft.com/dotnet/core/aspnet:3.1
即可,其他操作一样
1.新建一个 ASP.NET Core 2.1 项目#
然后运行一下项目,确保我们刚刚建立的项目可以正常运行。
2.编写 Dockerfile#
新建一个文本文件,命名为 Dockerfile
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]
这里我们需要用到官方的镜像:microsoft/dotnet:2.1-aspnetcore-runtime
如果要尝试更小的镜像,可以试试
microsoft/dotnet:2.1-aspnetcore-runtime-alpine
,这镜像使用了alpine
一款精简版极小的linux,但是随之而来的就是阉割了一些功能,实际使用的时候需要测试,比如国际化支持,它默认在这个镜像里面没有开启,需要配置环境变量来开启。
需要设置Dockerfile的如下属性,保证其能复制到发布目录:
3.构建Docker镜像#
我们将镜像命名为 :aspnetcoredocker
进入到发布文件目录,执行命令便可打包镜像:
docker build -t aspnetcoredocker .
我们可以编写 发布+构建 的脚本。
Windows:
文件名:build.bat
@echo off
echo "Windows Docker build"
cd ../AspNetCore.Docker
dotnet publish -c Release -o ../publish
cd ../publish
echo "publish success"
docker build -t aspnetcoredocker .
文件名:Linux:
build.sh
#!/bin/bash
echo Linux Docker build
cd ../AspNetCore.Docker
dotnet publish -c Release -o ../publish
cd ../publish
echo publish success
docker build -t aspnetcoredocker .
文件夹结构如下图:
执行构建:
./build.sh
构建成功后可以通过 docker images
命令查询到我们构建的镜像:
若在linux下执行sh脚本时,遇到错误“-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory“,请通过vim/vi编辑sh脚本,按:建,输入
set ff=unix
,然后回车、wq保存即可
4.运行镜像#
通过命令运行
docker run --name=aspnetcoredocker -p 7777:80 -d aspnetcoredocker
--name
:指定容器名称
-p
:指定容器端口
-d
:指定容器 后台运行
出现一长串字符串,便是表示运行成功:
我们也可以通过 docker ps
命令,查询我们正在运行的容器:
我们还可以通过 docker logs <容器名称或者id>来查看启动日志:
5.验证访问#
我们可以通过 curl
命令来直接访问我们容器启动的asp.net core 网站:
或者直接通过浏览器访问:
至此,我们通过Docker运行asp.net core 2.1应用程序就结束了。
6.资料#
本文所用代码:https://github.com/stulzq/BlogDemos/tree/master/AspNetCore.Docker
作者:晓晨Master(李志强)
出处:https://www.cnblogs.com/stulzq/p/9201830.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验