本文采用Docker For Windows,使用Hyper-V里的MobyLinuxVM实现
安装类的网上教程很多,不一一例举了
新建ASP.Net Core Web应用程序,模板用API就行,然后新建一个控制器SystemController;添加引用System.Net;
[Route("api/[controller]")]
[ApiController]
public class SystemController : ControllerBase
{
[HttpGet]
public ActionResult<object> Info() {
Dictionary<string, object> info = new Dictionary<string, object>();
info["ServerName"] = Environment.MachineName;
info["ServerIp"] = HttpContext.Connection.LocalIpAddress.ToString();
info["ServerPort"] = HttpContext.Connection.LocalPort;
info["ClientIp"] = HttpContext.Connection.RemoteIpAddress.ToString();
info["ClientPort"] = HttpContext.Connection.RemotePort;
return info;
}
}
直接运行后访问 /api/system,可以看到运行结果;
然后用PowerShell切换目录到项目文件夹输入命令
dotnet publish --runtime ubuntu.16.04-x64
执行完之后切换到 项目文件夹的bin\Debug\netcoreapp2.2\ubuntu.16.04-x64\publish
新建Dockerfile文件
FROM microsoft/aspnetcore:latest
WORKDIR /app
COPY ./ ./
ENV ASPNETCORE_URLS http://+:5680
ENTRYPOINT ["dotnet", "./{项目名称}.dll"]
(第四行有个小插曲,这里要设置端口号,防止端口冲突)
保存之后
docker build -t demo .
demo是自定义镜像名称,记住后面有个点,意思是指当前目录
docker run -it -p 5680:5680 demo
demo是前面定义的镜像名称,至此第一个docker就运行成功了
打开浏览器直接访问http://127.0.0.1:5680/api/system