Linux docker部署DotnetCore

1.在我们自己的项目里右键项目,新增–>启动docker支持,之后我们会看到在项目里新增了一个Dockerfile文件,

通过系统新建的Dockerfile不做任何修改,避免入坑,

之前就是在Dockerfile上面入了坑,把Dockerfile文件跟项目放一起了,跟Dockerfile中的目录结构对不上,导致构建一直错误;

Netcore新建的Dockerfile默认的EXPOSE端口是80,默认不要改他,改了以后就访问不了,有人就说了,我要是部署多个站点怎么办,

可以用多个端口映射容器的80,比方说8080->80,8081->80,这样都是可以的。 

 

 

 

2.在linux中新建文件夹,比方我的目录为root->netcore,然后将netcore项目文件夹上传到netcore下,

如何上传,可以下载WinSCP方便操作文件,

正常通过vs新建的Dockerfile是在项目目录下面,这时把Dockerfile文件拷贝到linux的netcore下,也就是项目文件夹外层目录

 

 

 

 

 3.上传成功后开始构建镜像,首先进入linux上传目录,Dockerfile所在目录netcore

 

 

命令:docker build -t netcore0414:1.0 .

注意:1.0后面是空格 英文句号

 

 

4.构建成功后,接着就是生成容器发布

命令:docker run --restart=always --name netcore0414container -d -p 8080:80 netcore0414:1.0

说明:--restart=always是开机自启,否则,服务器重启后,应用无法使用

发布完成后,用命令:docker ps -a 查看生成的容器,status中Up是成功的意思,这时在浏览器敲地址看看,Exited说明是没有启动

 一般来说linux系统都会有网络防火墙设置,如果防火墙关闭,那么只要linux上某个端口起了某个服务,那这个端口就能telnet的通,telnet某个端口能通的前提是这个端口起了服务,并且防火墙允许该端口的访问。

命令:firewall-cmd --zone=public --list-ports 查看开放端口

命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent 添加端口

命令:firewall-cmd --reload 重启防火墙

 

另:

 

为什么明明更改了Expose端口,生成镜像,通过映射启动容器后,却无法访问,这是为什么呢?

 

这是因为在Dockerfile中,没有配置环境变量,因为aspnetcore默认的监听端口就是80,这也是为啥只有暴露并映射80的时候才能访问,

 

所以我们要在Dockerfile中添加, 8080是你想用的端口

 

ENV ASPNETCORE_URLS=http://+:8080

 

posted @ 2022-04-14 11:28  没有钱了怎么办  阅读(4)  评论(0)    收藏  举报