最近学习Angular4
,服务端准备使用DotNetCore API
来实现,本文简单介绍下在Mac
中怎样将DotNetCore
程序部署在Docker
中,并使用Nginx
做反向代理让程序可以跑起来。
具体步骤如下
安装
Docker
拉取
DotNetCore
镜像使用
VS For Mac
创建DotNetCore
应用发布应用到
Docker
安装
Nginx
配置
Nginx
代理Docker
中的DotNetCore
应用
常用命令
Mac中安装Docker
在下面链接中下载Mac
版的Docker
安装文件进行Docker
的安装
https://docs.docker.com/docker-for-mac/install/
安装成功后,在系统的顶栏中可以看到下图代表安装成功:
在终端中执行docker --version
查看下Doker
的版本
在Docker中拉取NetCore镜像
直接执行下面命令,拉取最新版本的microsoft/dotnet
镜像
启动一个容器实例
因为DotNetCore
的默认端口监听为5000
,所以将容器的5000
端口映射到宿主机到5000
端口。启动成功后执行docker ps -a
,如一切顺利,可以看到如下图所示:
主要关注STATUS
,状态为up表示是正常启动,否则通过docker logs -f 容器id
来查看相关日志,通常可以看到容器没有启动成功的错误日志,然后Google
之。
创建DotNetCore应用
在创建应用之前先将VS For Mac
升级到最新版本,因为稍微老一点的版本不支持NetCore 2.0
,即便是安装了最新的dotnet-sdk-2.0.0
,最后发布的程序运行在Docker
中时会遇到各种问题。所以为了避免麻烦,先升级VS
。
在VS中创建新项目,选择API项目:
我的API
项目的名称为S2AppAdmin
,在终端中进入到项目的目录中,执行dotnet publish
,如下图:
在终端中进入到publish
目录中,执行dotnet S2AppAdmin.dll
,如下图:
可以看出已经监听了5000
端,现在在浏览器中输入http://localhost:5000/api/values/get
,可以看到API
接口的返回值已经在界面显示了。
发布应用到Docker
在网上找了很多资料,都是使用Dockerfile
来发布应用到Docker
中,用此方法试过很多次,但没有运行成功,后面找到原因再单独开篇来介绍,下面介绍另一种方法。
前面已经使用docker run
命令运行起一个Docker
实例来,容器id为:3be4cfc30126
,执行下面命令进入到容器中:
进入到home
目录后,使用mkdir s2app
命令创建s2app
目录,如下图:
执行exit
,退出容器回到宿主环境,进入到S2AppAdmin
项目的目录中,执行下面命令将publish
的文件复制到容器中
注意:上面的hardcore_leavitt
为容器的名称。
再次执行docker attach 3be4cfc30126
进入容器,在publish
目录中执行dotnet S2AppAdmin.dll
,如下图:
这时在宿主环境中访问http://localhost:5000/api/values/get
,发现无法访问,说明容器和宿主没有打通。
在VS中打开Program.cs
文件,添加.UseUrls("http://*:5000")
,如下图:
在项目目录下执行下面命令:
在容器内执行:
再在浏览器中访问http://localhost:5000/api/values/get
,发现结果已经可以正常显示了。
Nginx安装
使用brew
来安装Nginx
,至于什么是brew
,自行去Google
。下面先看几个brew
的常用命令
安装成功后,输入nginx -v
,可以看到nginx
的版本信息
在/usr/local/etc/nginx
目录中找到并打开nginx.conf
文件,添加如下代码:
如下图:
正常情况下,在浏览器中输入http://localhost:8000/api/values/get
,可以看到API
的输出结果。
常见问题
问题:nginx-1.8.0 already installed, it’s just not linked
问题:出现如下错误信息:
相关文章:
.NET Core 2.0 正式发布信息汇总
.NET Standard 2.0 特性介绍和使用指南
.NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决
.NET Core 2.0 特性介绍和使用指南
Entity Framework Core 2.0 新特性
体验 PHP under .NET Core
.NET Core 2.0使用NLog
升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署
解决Visual Studio For Mac Restore失败的问题
ASP.NET Core 2.0 特性介绍和使用指南
.Net Core下通过Proxy 模式 使用 WCF
.NET Core 2.0 开源Office组件 NPOI
ASP.NET Core - Razor页面之Handlers处理方法
ASP.NET Core Razor页面 vs MVC
Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍
ASP.Net Core 2.0中的Razor Page不是WebForm
Error Handling in ASP.NET Core
ASP.NET Core Razor 视图组件
原文地址:http://fwhyy.com/2017/09/run-netcore-two-in-mac-docker/
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注