Docker Nginx容器和Tomcat容器实现负载均衡与动静分离

下载Tomcat8镜像


[root@localhost ~]# docker search tomcat8
NAME                                     DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ashince/tomcat8                          Tomcat GUI Manager pre-configured docker ima…   5                                       
podbox/tomcat8                                                                           2                                       [OK]



这个tomcat包含了jdk而且启动了可以直接访问,自己启动了8080端口
[root@localhost ~]# docker pull ashince/tomcat8
Using default tag: latest
latest: Pulling from ashince/tomcat8
06b22ddb1913: Pulling fs layer 
336c28b408ed: Pull complete 
1f3e6b8d80c3: Pull complete 
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              2622e6cca7eb        2 weeks ago         132MB
ashince/tomcat8     latest              02aedead27dd        22 months ago       314MB

启动一个Nginx容器和两个Tomcat容器


[root@localhost ~]# docker run  -itd -p 8080:8080 ashince/tomcat8  
3e3f2aabe67de7ee3f4b6d62176e21aaa9d2302922845cb08ad37af7146b13c5
[root@localhost ~]# docker run  -itd -p 8081:8080 ashince/tomcat8  
644d59711c805a626b7c1c219aa018f744098a14dd41e54744d6b13e7ba66a2f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
cca55c4ad919        ashince/tomcat8     "catalina.sh run"        About a minute ago   Up About a minute   0.0.0.0:8081->8080/tcp   unruffled_lalande
08b58d2f41d6        ashince/tomcat8     "catalina.sh run"        7 minutes ago        Up 7 minutes        0.0.0.0:8080->8080/tcp   relaxed_williamson
aeebcb0b40a2        nginx               "/docker-entrypoint.…"   2 hours ago          Up 2 hours          0.0.0.0:80->80/tcp       priceless_ardinghelli 

 

#将Nginx容器当中的配置拷贝到本地修改,因为容器当中没有vi vim命令
[root@localhost ~]# docker cp 68d2bdf336ed:/etc/nginx/conf.d/default.conf .
[root@localhost ~]# ls
anaconda-ks.cfg  default.conf  index.html
[root@localhost ~]# grep -vE "#|^$" default.conf 
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

#两台tomcat的ip地址
[root@localhost ~]# for i in {72e174adc77d,080068dae40a};do docker inspect $i| grep -i ipaddr |tail -n  1;done
                    "IPAddress": "172.17.0.4",
                    "IPAddress": "172.17.0.3",

拷贝静态资源到Nginx目录下做动静分离 ,同时修改配置文件


#将其中一台Tomcat的ROOT目录拷贝到本地,因为做动静分离Nginx需要访问静态资源要在本地
[root@localhost ~]# docker cp 72e174adc77d:/usr/local/tomcat/webapps/ROOT .

#拷贝到Nginx发布目录下面
[root@localhost ~]# docker cp ROOT     68d2bdf336ed:/usr/share/nginx/html/
[root@localhost WEB-INF]#  docker exec 68d2bdf336ed  ls -l /usr/share/nginx/html/ROOT
total 184
-rwxrwxrwx 1 root root  7064 Jun 21  2017 RELEASE-NOTES.txt
drwxrwxrwx 2 root root    21 Jul 27  2017 WEB-INF
-rwxrwxrwx 1 root root 26447 Jun 21  2017 asf-logo-wide.svg
-rwxrwxrwx 1 root root   713 Jun 21  2017 bg-button.png
-rwxrwxrwx 1 root root  1918 Jun 21  2017 bg-middle.png
-rwxrwxrwx 1 root root  1392 Jun 21  2017 bg-nav-item.png
-rwxrwxrwx 1 root root  1401 Jun 21  2017 bg-nav.png
-rwxrwxrwx 1 root root  3103 Jun 21  2017 bg-upper.png
-rwxrwxrwx 1 root root 21630 Jun 21  2017 favicon.ico
-rwxrwxrwx 1 root root 12279 Jun 21  2017 index.jsp
-rwxrwxrwx 1 root root  2376 Jun 21  2017 tomcat-power.gif
-rwxrwxrwx 1 root root  5581 Jun 21  2017 tomcat.css
-rwxrwxrwx 1 root root  2066 Jun 21  2017 tomcat.gif
-rwxrwxrwx 1 root root  5103 Jun 21  2017 tomcat.png
-rwxrwxrwx 1 root root 67795 Jun 21  2017 tomcat.svg

#修改后的Nginx配置文件如下,修改完后拷贝会容器当中
[root@localhost ~]# docker cp default.conf 68d2bdf336ed:/etc/nginx/conf.d/default.conf 
[root@localhost ~]#  docker exec 68d2bdf336ed cat /etc/nginx/conf.d/default.conf 
upstream tomcat_web{
server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    error_page   500 502 503 504  /50x.html;
    root   /usr/share/nginx/html; 
    location /{
    proxy_pass http://tomcat_web;
    proxy_set_header host $host;
    } 
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
      root /usr/share/nginx/html/ROOT;
      expires 30d;
      access_log off;
    }
   
    location ~ .*\.(eot|ttf|otf|woff|svg)$ {
      root /usr/share/nginx/html/ROOT;
      expires 30d;
      access_log off;
    }
   
    location ~ .*\.(js|css)$ {
      root /usr/share/nginx/html/ROOT;
      expires 30d;
      access_log off;
    }
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

#加载新的配置项
[root@localhost ~]# docker exec -it 68d2bdf336ed /bin/bash
root@68d2bdf336ed:/# /usr/sbin/nginx -s reload
2020/06/29 07:12:05 [notice] 79#79: signal process started

再去访问Nginx 80端口如图所示: 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值