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