在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保存即可

猜你喜欢

转载自www.cnblogs.com/fanqisoft/p/10883097.html