接着上一节没有演示完的继续,链接:Docker学习笔记之-安排.NetCore3.1项目到Docker容器,并使用Nginx反向代理(CentOS7一)
演示方法:
1获取nginx镜像,并运行Nginx容器
2根据上传的项目生成镜像文件,并运行项目容器
4最终展示效果
第一步:获取nginx镜像,并运行 nginx容器
要运行容器,首先需要有相应的镜像,使用下面的命令拉取Nginx镜像:如果不指定版本号,默认拉取最新版本
dockpullnginx
获取Nginx镜像之后,就可以根据镜像来运行Nginx容器,使用下边命令运行容器
dockrun--name=nginx-d-p4043: 80nginx
上面命令的解释如下:
上图表示Nginx容器已经在运行,通过外部访问4043端口,显示如下,表示胜利
第二步:?生成项目镜像文件,并运行项目容器
首先找到项目文件目录,并进入项目根目录当中,然后使用如下命令生成镜像
l--检查外地文件列表cdnetcoredemo-- 进入到项目根目录dockerbuild-tmyapidemo.--生成项目镜像文件
上面命令的解释:
通过命令 dockerimag检查当前运行的镜像,可以看到上边的镜像已经创立胜利,并且自动创立相关依赖镜像。
创立完镜像后,?使用下边命令运行容器
dockrun--name=myapidemo-d-p9020: 80myapidemo
解释:
1容器名:myapidemo
2对外开放端口:9020??
上图可以看到容器已经胜利运行,现在就可以远程通过 9020端口直接访问项目了如下:调用API项目接口:
但是为了平安,生产环境是不允许这样直接访问容器的所以需要使用Nginx来代理访问!
第三步:配置Nginx相关映射,并映射到项目容器,实现反向代理
首先进入Nginx容器,检查Nginx默认配置都是神马内容,使用下面的命令进入容器里面
dockexec-itnginx/bin/bash
解释说明:
正常情况下你会看到如下图所示,会发现,终端账户名称变了从原来的@centos7变成了@xxxxxx5b说明已经进入到容器当中了
使用命令 exit可以退出容器
Nginx默认会安装在etc目录下面,通过命令 ls和命令 cd结合,一层层往下找!
使用vim命令编辑 nginx.conf文件,这时候邦德一下,发现竟然报错了
原因是因为 vim命令需要装置一下,系统自身是没有装置的直接执行如下命令进行更新装置:
apt-getupdat-- 先更新来源apt- getinstal-yvim--装置 vim
再次使用vim命令编辑 nginx.conf文件
看最后红框里面的内容 includ/etc/nginx/conf.d/*.conf表示默认使用的conf.d目录下面的conf文件进行配置。
?那么接下来,映射内容也将会针对 conf.d目录展开,可以看到conf.d目录下有个 default.conf文件!
?
所谓映射的目的就是隐藏服务器上真实的外地目录,使用自定义的别名对外开放,供外部访问!
首先在服务器上创建nginx一些自定义文件存储目录,用于去隐藏真实目录或文件!
执行如下命令,创立三个文件目录?wwwlogconf
mkdir-p/root/nginx/www/root/nginx/log/root/nginx/conf
检查nginx容器id
将nginx容器中,conf.d目录下的配置文件copi外地,cp表示复制
dockcpea37c8eaef5b:/etc/nginx/conf.d/default.conf/root/nginx/conf
上图表示已经胜利复制过来了
要给netcor容器配置反向代理,首先需要知道netcor项目容器的IP地址,所以在修改配置之前,首先需要获取myapidemo容器的IP地址。
dockinspect-f{{rang.NetworkSettings.Networks}}{{.IPA ddress}}{{end}} 容器名 or容器Id
然后使用vim命令编辑 default.conf文件,将文件内容设置如下:
server{listen 80 ;charsetutf- 8 ;server_nam 172.17. 0.3 ;locat/ {proxy_passhttp: // 172.17.0.3:80;proxy_redirect default ;}}
因为容器是内部访问,所以设置的端口是80而不是运行容器时设置的对外的9020端口。?修改完成之后,:wq保管退出
现在重新创立一个新的nginx容器,名称为:nginxapi,并将www,logs,conf目录映射到外地,对外端口设置为:4030
dockrun-d-p4030: 80-- namenginxapi\-v/root/nginx/www:/usr/share/nginx/ html\-v/root/nginx/conf/ default.conf:/etc/nginx/conf.d/ default .conf\-v/root/nginx/logs:/ var/log/ nginx\nginx
上图可以看到新的容器胜利创立并运行,并且对外设置的端口为:4030
现在通过4030端口在访问我上边的项目接口,如下图所示,访问胜利!
而用未设置映射的Nginx容器,4043端口访问接口,则返回的<404Notfound>
原文链接:https://007.gangguana.com/a/d48f551d9834058ade6d486329cab4df.shtml