MOSS

导航

Centos 7 ASP.NET Core 1.0 Docker部署

先决条件

64位,内核3.10以上,查看当前的内核版本,打开一个终端使用uname -r显示您的内核版本

   

   

   

安装

sudo yum update

   

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

   

   

   

安装docker

sudo yum install docker-engine

   

   

启动docker

sudo service docker start

   

验证docker已正常安装

   

安装.net core 镜像

https://hub.docker.com/r/microsoft/dotnet/

   

   

新建文件Dockerfile ,并修改内容

   

   

文件内容

#基于`mcrosoft/dotnet:1.0.0-core` 来构建我们的镜像

FROM microsoft/dotnet:1.0.0-core

   

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中

COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹

   

WORKDIR /publish

   

#设置Docker容器对外暴露60000端口

EXPOSE 60000

   

#使用`dotnet MyApp.TestCore.dll`来运行应用程序

   

CMD ["dotnet", "MyApp.TestCore.dll"]

   

   

   

   

构建镜像

docker build -t my-dotnet-app .

   

注意最后有个.

如果创建失败,需要vpn才可以,这一步我试了几次总有超时,就找了个vpn再次构建就成功了

   

   

运行

docker run --name my-dotnet-app -d -p 60000:60000 my-dotnet-app

   

测试站点

   

失败了,报curl: (56) Recv failure: Connection reset by peer

   

参考解决办法:http://stackoverflow.com/questions/27806631/docker-rails-app-fails-to-be-served-curl-56-recv-failure-connection-reset

   

修改程序如下:添加UseConfiguration

var configuration = new ConfigurationBuilder()

.AddCommandLine(args)

.Build();

   

var host = new WebHostBuilder()

.UseKestrel()

.UseContentRoot(Directory.GetCurrentDirectory())

.UseConfiguration(configuration)

.UseIISIntegration()

.UseStartup<Startup>()

.Build();

   

host.Run();

   

发布程序

修改Dockerfile 文件如下

   

   

FROM microsoft/dotnet:1.0.0-core

   

COPY . /publish

   

WORKDIR /publish

   

EXPOSE 5003

   

CMD ["dotnet", "MyApp.TestCore.dll","--server.urls", "http://*:5003"]

   

重新构建镜像

   

sudo docker build -t dotnetapp .

   

   

运行并查看

sudo docker run --name dotnetapp -d -p 5003:5003 dotnetapp

   

   

测试站点

   

   

api返回数据,成功

防火墙开放端口

$ sudo firewall-cmd --zone=public --add-port=5003/tcp --permanent
$ sudo firewall-cmd --reload

   

   

说下遇到的问题:

1.构建镜像时由于网络原因,试了好几次都没有成功,需要找个vpn

2.curl: (56) Recv failure: Connection reset by peer 这个错误,.net core默认创建的站点绑定的是localhost这个需要修改站点绑定方式,通过添加

UseConfiguration或UseUrls方式修改默认站点的绑定

   

   

   

   

   

   

posted on 2016-09-28 08:19  liuyuhua  阅读(505)  评论(0编辑  收藏  举报