美文网首页java每周杂谈
基于docker构建java和nginx反向代理

基于docker构建java和nginx反向代理

作者: 逍遥天下_6fe4 | 来源:发表于2020-05-04 10:15 被阅读0次

    1、搭建环境说明

    Windows环境win10+docker

    基础信息说明

    本文全程使用CMD控制台进行命令操作,可能的朋友使用Linux命令比较习惯。在此也推荐一个CMD环境使用shell命令的方式

    使用git进行CMD控制台对shell的支持,git安装一路下一步,然后配置如下path路径支持即可

    Git安装路径\Git\usr\bin;

    Git安装路径\Git\mingw64\bin;

    另外如果朋友们不知道是配置不对还是docker的原因导致的 最终没有成功的,建议脱离容器,使用一个nginx和tomcat进行配置一次然后先验证下配置是否已经生效

    如果是配置文件有问题 在nginx的文件夹下 执行nginx.exe 可以看到异常问题

    用得到的常规命令

    docker 日志

    docker logs -f ID

    docker端口

    docker port ID

    docker网络路由查看route print

    查看机器信息IP

    ocker inspect  1990d5bcebaf

    docker inspect --format='{{.NetworkSettings.IPAddress}}' ID

    因为docker容器内部支持命令有限 查看文件内容要用cat

    cat  /etc/nginx/nginx.conf

    2、基础镜像准备

    Java项目准备

    可以参考历史文档java项目docker云化入门

    nginx部署准备

    docker run nginx 执行此命令会自动拉取最新的nginx镜像

    3、容器启动

    Nginx容器启动

    先启动ngixn容器 然后看看下容器内的配置文件资源位置

    /usr/share/nginx/html

    /etc/nginx/nginx.conf

    /etc/nginx/conf.d

    /var/log/nginx

    然后对应在本地磁盘下依次创建对应结构文件,然后再重新启动nginx的时候加载指定本地磁盘的文件路径

    docker run  --name mynginx -d -p 80:80

    -v d:\docker\nginx\html:/usr/share/nginx/html

    -v d:\docker\nginx\conf\nginx.conf:/etc/nginx/nginx.conf

    -v d:\docker\nginx\conf.d:/etc/nginx/conf.d

    -v d:\docker\nginx\logs:/var/log/nginx nginx

    参考上面的命令 因为是我是在windows环境弄的,Windows路径需要\斜线来指定路径,我的文件均在D盘docker\nginx文件夹下处理  然后执行上面的命令启动nginx加载本地自定义文件。然后使用 docker exec -it id /bin/bash 命令进入docker 容器,查看下当前docker容器内数据是否已经被指定文件覆盖。 然后启动两个java程序,然后查看docker运行时容器有哪些 检查启动是否成功

    查看运行容器IP地址

    用docker

    inspect  ID命令查看当前容器的ID地址

    具体执行命令如下

    docker inspect --format='{{.NetworkSettings.IPAddress}}' ID

    4、反向代理配置

    修改nginx.conf配置文件 增加如下配置

    Upstream 下面是java项目的部署地址和端口

    upstream example{

    server 172.17.0.2:8080weight=1;

    server 172.17.0.3:8080 weight=1;

    }

    server {

    listen       80;

    server_name  www.example.com localhost;

    location / {

    proxy_pass http://example;

    }

    }

    重新覆盖nginx配置 然后启动容器访问nginx服务 即可直接转发到java项目中,最终结果如下图

     

    查看java项目日志

    docker logs -f  ID  查询实时日志   发现在页面刷新请求的时候 ,已经分别把请求转发到了两个docker容器上了。

    5、问题截图

    上面我的java项目是没有bin/bash的可以使用 /bin/sh进入

    如下图所示 ,这个nginx挂载文件的时候 指定的替换文件不对应导致的,指定替换nginx的文件位置指定成了文件夹了

    备注

    本实践操作仅仅适合练手,不适合实际操作,反向代理和负载均衡阶段生产环境需要支持信息因业务不同也不同,在此文不做相关说明

    相关文章

      网友评论

        本文标题:基于docker构建java和nginx反向代理

        本文链接:https://www.haomeiwen.com/subject/cgestxtx.html