一.发布准备
?
今天我门换了一个jar,所以干脆换了一个镜像
修改default.conf文件
#服务器的集群
upstream tomcatList { #服务器集群名字
server 172.18.0.5:8081 weight=1; #服务器1 weight是权重的意思,权重越大,分配的概率越大
server 172.18.0.3:8081 weight=2; #服务器2 weight是权重的意思,权重越大,分配的概率越大
server 172.18.0.4:8081 weight=2; #服务器2 weight是权重的意思,权重越大,分配的概率越大
}
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
把要用的jar包导入
?
创建镜像 spring:2.0?
docker build -t spring2.0? .
创建nginx镜像中的容器
docker run -itd --name nginx -p 8082:80 nginx
??
?进入nginx的文件目录
cd /etc/nginx
?打开? nginx.conf
?红线部分:conf.d本身是一个文件夹,这句话意思是,它会把所有conf.d文件夹下所有以conf结尾的文件全部加载进来,所以这个文件里面没有做配置
所以就进入conf.d? 查看default.conf文件
?cd conf.d
server {
listen 80;
server_name www.zking.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/local/tools/vue;
index index.html index.htm;
}
#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;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
location ~^/spa/ {
proxy_pass http://192.168.253.129:8080;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
把里面得文件信息配到容器里
?docker exec -it nginx bash
?进入?cd /etc/nginx/
?cd /etc/nginx/
可以看到有个 default.conf 文件? ,今天任务其实只要把它改成相应得就行了
?但这里有个问题,这个文件在容器内,我们的工具不能进入容器内,相应的肯定就会使用 vim命令 或者 vi命令??
可以看到我们的镜像不支持vim和vi命令,理所当然,缺哪个软件我们就下哪个软件,但是下软件很麻烦。
解决办法:
1.直接打包一个具备centos的镜像再发布 (也麻烦)
2.我们可以把文件拿到宿主机里面,然后使用目录挂载把文件挂载到容器里去
?做法:
先进入home文件夹,创建 nginx目录
cd /home
?mkdir nginx
?把我们的配置文件,静态资源,前端项目 挂载到容器
1.建立对应的文件夹
?mkdir {conf.d,html,log}
?放入对应的文件
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/spa/ {
proxy_pass http://192.168.253.131:8080;
}
}
?解压
?unzip vue.zip
解压之后 挂载
docker run -itd \ > --name nginx01 \ > -v /home/nginx/conf.d:/etc/nginx/conf.d \ > -v ?/home/nginx/html:/etc/nginx/html \ > -v ?/home/nginx/log:/usr/log/nginx \ > -p 8081:80 \ > nginx
访问8081
?
但是点击后台访问的时候控制台会报错
?二.nginx反向代理
基于spring2.0镜像创建容器
?docker run -it --name spring01 -p 8082:8081?spring:2.0
运行之后运行(顺应不能乱)
?Ctrl p? Ctrl q
进入conf.d修改default文件
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/api/ {
proxy_pass http://192.168.253.131:8082;
}
}
?再次修改default文件,修改之前查看桥段
?docker inspect spring01
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/api/ {
proxy_pass http://172.17.0.3:8082;
}
}
?新开一个窗口,进入nginx01容器中
docker exec -it nginx01 bash
重新读取配置文件
nginx -t
nginx -s reload
再次修改default文件,修改成单个集群
#服务器的集群
upstream tomcatList { #服务器集群名字
server 172.17.0.3:8081 weight=1; #服务器1 weight是权重的意思,权重越大,分配的概率越大
}
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ^~/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
?2、查看负载均衡轮回
修改default.conf:?weight权重
upstream tomcatList {
server 172.17.0.3:8081 weight=1;
server 172.17.0.4:8081 weight=1;
}
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
?浏览器访问四次
spring01两次,spring02两次
?
?三、容器跨网段数据交互?
1,删除spring01和spring02
2、再次新建spring01和spring02·,修改语句
docker run -it --name spring01?--net mynet?-p 8081:8081 spring:2.0
?3、网段地址变换
①、查看mynet
?②、修改default.conf
upstream tomcatList {
server 172.18.0.2:8081 weight=1;
server 172.18.0.3:8081 weight=1;
}
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~^/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
?会出现响应超时问题!还是会访问不到
4、双网覆盖
docker network connect mynet nginx01
?
今天内容就到此为止了
?
|