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