1. 程式人生 > 實用技巧 >基於Docker構建上百臺Nginx、Tomcat

基於Docker構建上百臺Nginx、Tomcat

1、啟動Nginx

docker pull docker.io/nginx

docker run -itd --privileged -p 80:80 nginx

登入網址http://localhost:80,成功返回頁面

2、批量啟動10Tomcat

for i in `seq -w 1 10`;do docker run -itd --privileged --name="Tomcat$i" tomcat;done

3、修改Nginx配置

  ①獲取所有tomcat 容器的IP

  docker inspect $(docker ps | awk '/Tomcat/ {print $1}') | grep -i ipadd | grep -oE '([0-9]{1,3}\.){3}[0-9]'|uniq|sort

  

  ②獲取Nginx 負載均衡配置模板

  docker inspect $(docker ps | awk '/Tomcat/ {print $1}') | grep -i ipadd | grep -oE '([0-9]{1,3}\.){3}[0-9]'|uniq|sort|awk '{print "server "$0":8080 weight=100 max_fails=2 fail_timeout=15;"}'

  

  ③更新/etc/nginx/conf.d/default.conf

  

cat>/etc/nginx/conf.d/default.conf<<EOF
upstream tomcat {
server 10.10.10.1:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.2:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.4:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.5:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.6:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.7:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.8:8080 weight=100 max_fails=2 fail_timeout=15;
server 10.10.10.9:8080 weight=100 max_fails=2 fail_timeout=15;
}

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
		proxy_pass http://tomcat;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
EOF

檢查nginx語法nginx -t,然後重啟容器的nginx程序nginx -s reload

  

解決問題:

1、Tomcat 啟動後在網頁訪問時提示拒絕

  排查了防火牆、程序,發現Tomcat的程序根本沒有起來,原因是啟動Tomcat的命令用了:docker run -itd --privileged tomcat:latest bash

  多加了一個bash,讓tomcat程序沒有起來

2、Tomcat啟動後提示404

使用docker安裝了tomcat映象,預設為latest最新的(8.5.50版本),依據tomcat映象建立容器並同時做了埠對映

命令為:docker run --name tomcat01 -d -p 8083:8080 tomcat

用的是阿里雲的雲伺服器,防火牆也開了埠,在瀏覽器中訪問,http://112.74.40.14:8083/ 提示如下介面

提示資源未找到,這就出現了tomcat容器正常執行但是無法訪問到tomcat首頁的問題,其實這並不是我們映象或者容器的問題,只是這個版本的tomcat開發者不知道怎麼想的,在webapps下是空的,所以訪問不到首頁,後來換成8.0.52版本就可以了。新版本中,原本應該在webapps中的檔案,被放在了webapps.list中,只要把檔案放回原位,也可以解決這個問題。