Centos 7 ASP.NET Core 1.0 Docker部署

时间:2023-03-09 01:01:01
Centos 7 ASP.NET Core 1.0 Docker部署

先决条件

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

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

 
 

安装

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

 
 

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

安装docker

sudo yum install docker-engine

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

启动docker

sudo service docker start

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

验证docker已正常安装

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

安装.net core 镜像

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

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

新建文件Dockerfile ,并修改内容

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

文件内容

#基于`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"]

 
 

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

 
 

构建镜像

docker build -t my-dotnet-app .

 
 

注意最后有个.

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

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

运行

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

 
 

测试站点

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

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

 
 

参考解决办法:http://*.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 .

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

运行并查看

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

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

测试站点

 
 

Centos 7 ASP.NET Core 1.0 Docker部署

 
 

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方式修改默认站点的绑定