Docker学习笔记之-部署.NetCore3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二)

        接着上一节没有演示完的继续,链接: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

        解释说明:

        

        如果你看到上图过失,说明你Nginx容器没有运行,使用命令 dockerstartnginx??启动即可!

        正常情况下你会看到如下图所示,会发现,终端账户名称变了从原来的@centos7变成了@xxxxxx5b说明已经进入到容器当中了

        

        使用命令 exit可以退出容器

        

        Nginx默认会安装在etc目录下面,通过命令 ls和命令 cd结合,一层层往下找!

        

        使用vim命令编辑 nginx.conf文件,这时候邦德一下,发现竟然报错了

        

        原因是因为 vim命令需要装置一下,系统自身是没有装置的直接执行如下命令进行更新装置:

apt-getupdat--先更新来源apt-getinstal-yvim--装置 vim

        注意:上边两个命令,不是用 yum命令装置,而是用 apt-get命令!

        

        再次使用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{listen80;charsetutf-8;server_nam172.17.0.3;locat/{proxy_passhttp://172.17.0.3:80;proxy_redirectdefault;}}

        因为容器是内部访问,所以设置的端口是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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享