重要提示,本文为 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
便可,其余操做同样linux
1.新建一个 ASP.NET Core 2.1 项目
而后运行一下项目,确保咱们刚刚创建的项目能够正常运行。git
2.编写 Dockerfile
新建一个文本文件,命名为 Dockerfile
github
FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app COPY . . EXPOSE 80 ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]
这里咱们须要用到官方的镜像:microsoft/dotnet:2.1-aspnetcore-runtime
docker
若是要尝试更小的镜像,能够试试
microsoft/dotnet:2.1-aspnetcore-runtime-alpine
,这镜像使用了alpine
一款精简版极小的linux,可是随之而来的就是阉割了一些功能,实际使用的时候须要测试,好比国际化支持,它默认在这个镜像里面没有开启,须要配置环境变量来开启。shell
须要设置Dockerfile的以下属性,保证其能复制到发布目录:vim
3.构建Docker镜像
咱们将镜像命名为 :aspnetcoredocker
浏览器
进入到发布文件目录,执行命令即可打包镜像:bash
docker build -t aspnetcoredocker .
咱们能够编写 发布+构建 的脚本。app
Windows:asp.net
文件名: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