目录

1、搭建环境说明

2、基础镜像准备

Java项目准备

nginx部署准备

3、容器启动

Nginx容器启动

查看运行容器IP地址

4、反向代理配置

5、问题截图 

备注


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 可以看到异常问题 

nginx 做java多服务请求分发_docker

nginx 做java多服务请求分发_nginx_02

本文用得到的常规命令 汇总

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项目准备


nginx部署准备

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

nginx 做java多服务请求分发_负载均衡_03

 

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运行时容器有哪些 检查启动是否成功

nginx 做java多服务请求分发_nginx 做java多服务请求分发_04

 

 

查看运行容器IP地址

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

具体执行命令如下

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

 

nginx 做java多服务请求分发_负载均衡_05

 

 

 

4、反向代理配置

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

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

upstream example{
        server 172.17.0.2:8080 weight=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项目中,最终结果如下图

nginx 做java多服务请求分发_nginx_06

查看java项目日志 

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

 

nginx 做java多服务请求分发_nginx 做java多服务请求分发_07

 

 

5、问题截图 

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

nginx 做java多服务请求分发_nginx_08

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

nginx 做java多服务请求分发_docker_09