docker容器+tomcat+nginx動靜分離

docker實戰 tomcat8與nginx負載均衡及動靜分離 css

一、下載鏡像html

[root@docker ~]# docker pull ashince/tomcat8
[root@docker ~]# docker pull nginxnginx

二、檢查web

[root@docker www]# docker images |grep -aiEw "nginx|tomcat8"
nginx latest bc9a0695f571 6 days ago 133MB
ashince/tomcat8 latest 02aedead27dd 2 years ago 314MBdocker

三、建立nginx容器vim

[root@docker ~]# docker run -itd -p 80:80 --name myweb --privileged -v /data/webapps/www:/data/webapps/www nginx:latest
e22f8cde11299146a8faf9bd25d1be194ade8ef848217159f162c5f947454103tomcat

#建立目錄
[root@docker ~]# mkdir -p /data/webapps/www
[root@docker ~]# docker ps |grep nginx
e22f8cde1129 nginx:latest "/docker-entrypoint.…" 47 seconds ago Up 46 seconds 0.0.0.0:80->80/tcp mywebbash

#查看ip
[root@docker ~]# docker inspect e22f8cde1129 |grep -ai "ipaddr"|tail -1 |grep -aioEw "([0-9]{1,3}\.){3}[0-9]{1,3}"
172.17.0.2app

#進入容器負載均衡

[root@docker ~]# docker exec -it e22f8cde1129 /bin/bash
root@e22f8cde1129:/# sed -i "s#/usr/share/nginx/html#/data/webapps/www#g" /etc/nginx/conf.d/default.conf
root@e22f8cde1129:/# sed -e '/#/d' -e '/^$/d' /etc/nginx/conf.d/default.conf
root@e22f8cde1129:/# mkdir -p /data/webapps/www
root@e22f8cde1129:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@e22f8cde1129:/# nginx -s reload
2020/12/01 08:32:59 [notice] 39#39: signal process started

#返回
root@e22f8cde1129:/# exit
exit

#上傳文件
[root@docker ~]# \cp baidu.zip /data/webapps/www/
[root@docker ~]# cd /data/webapps/www/
[root@docker www]# unzip baidu.zip
#unzip baidu -d /data/webapps/www
[root@docker www]# mv baidu/* .
[root@docker www]# rm -rf baidu*
[root@docker www]# ls
css images index.html js robots.txt template


#新建2個tomcat容器
[root@docker www]# docker run -itd -p 8081:8080 --privileged --name=tomcat-web01 ashince/tomcat8
9508f40906d6baf28f1c936a6a91a9c41cdfc4af751001890cb2cd855d8e1700
[root@docker www]# docker run -itd -p 8082:8080 --privileged --name=tomcat-web02 ashince/tomcat8
a45404c07048d9ae20885c78c1c81cffe8bbedadaa4b94dd38562c65f2535913
#查看容器id與對應的ip地址
[root@docker www]# for i in $(docker ps |awk 'NR>1 {print $1}');do echo $i; docker inspect $i |grep -ai "ipaddr"|tail -1 |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}" ;done |sed 'N; s/\n/:/g'
a45404c07048:172.17.0.4
9508f40906d6:172.17.0.3
e22f8cde1129:172.17.0.2
#查看容器的NAME與對應的ip地址
[root@docker www]# for i in $(docker ps |awk 'NR>1 {print $NF}');do echo $i; docker inspect $i |grep -ai "ipaddr"|tail -1 |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}" ;done |sed 'N; s/\n/:/g'
tomcat-web02:172.17.0.4
tomcat-web01:172.17.0.3
myweb:172.17.0.2
#將nginx容器的配置文件保存到當前目錄下的default.conf

[root@docker www]# docker exec myweb grep -aivE "#|^$" /etc/nginx/conf.d/default.conf > default.conf
#編輯default.conf 配置負載均衡
[root@docker www]# vim default.conf
upstream tomcat_web {
server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15s;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15s;

#這是增長的
}

server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://tomcat_web;
proxy_set_header host $host;
#增長2行
#root /data/webapps/www;
#禁用root
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /data/webapps/www;
}
}
#將修改好的default.conf文件複製到容器內,覆蓋以前的配置文件

[root@docker www]# docker cp default.conf myweb:/etc/nginx/conf.d/default.conf
#平滑重啓nginx
[root@docker www]# docker exec myweb nginx -s reload

##負載均衡完成。

 

四、繼續修改default.conf,實現動靜分離

upstream tomcat_web {
server 172.17.0.3:8080 weight=10 max_fails=2 fail_timeout=15s;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15s;

}

}

server {
upstream tomcat_web {
server 172.17.0.3:8080 weight=10 max_fails=2 fail_timeout=15s;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15s;

}

server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://tomcat_web;
proxy_set_header host $host;
#root /data/webapps/www;
index index.html index.htm;
}

location ~ .*\.(html|htm|js|css|png|jpg|jpeg|gif|text|doc|mp3)$
{
root /data/webapps/www;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /data/webapps/www;
}

}

#進入容器
[root@docker www]# docker exec -it tomcat-web01 /bin/bash
#切換目錄
root@9508f40906d6:/usr/local/tomcat# cd webapps/ROOT/
#打包
root@9508f40906d6:/usr/local/tomcat/webapps/ROOT# tar -cvf ROOT.tar *.*
#返回
root@9508f40906d6:/usr/local/tomcat/webapps/ROOT# exit
#將打包文件複製到當前目錄下
[root@docker www]# docker cp 9508f40906d6:/usr/local/tomcat/webapps/ROOT/ROOT.tar .

 

 

最終結果以下

相關文章
相關標籤/搜索