docker-compose搭建Nginx+Tomcat负载均衡环境
来源:互联网 发布:sqlite数据库加密 编辑:程序博客网 时间:2024/06/03 22:31
docker-compose是用来将多个容器连接起来,并一次性执行一些命令,如端口转发,数据卷等的构建工具,可以代替docker run时加上的参数 主要配置文件
docker-compose.yml如下:
tomcat1: build: ./tomcat1 expose: - 8080 ports: - "4444:8080"tomcat2: build: ./tomcat2 expose: - 8080 ports: - "5555:8080"nginx: build: ./nginx # volumes:# - ./confignginx:/etc/nginx links: - tomcat1:tomcat1 - tomcat2:tomcat2 ports: - "8000:80" expose: - 80
tomcat1:tomcat1表示连接tomcat1容器并启别名为tomcat1 别名在后面负载均衡时会用到
tomcat容器的dockerfile放在tomcat1和tomcat2目录下 为了区分方便 我部署了两个不同的war包 但镜像构建是一样的
Dockerfile如下: ubuntu-tomcat这个是我自己构建的镜像 已完成了jdk tomcat的安装 丢war部署即可 所以下面对应的方法被我注释掉了 自己add自己的jdk 才能保证编译和部署版本完全一致
FROM ubuntu-tomcat#&& tar -zxvf jdk-8u91-linux-x64.tar.gz#ADD jdk-8u91-linux-x64.tar.gz /usr/ADD test.war /usr/apache-tomcat-7.0.77/webapps/#ENV JAVA_HOME /usr/jdk1.8.0_91##RUN apt-get install -y wget \# && cd /usr \# && wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77.tar.gz \# && tar -zxvf apache-tomcat-7.0.77.tar.gz#CMD ["/usr/apache-tomcat-7.0.77/bin/catalina.sh","run"]#用catalina.sh不用startup.sh 刚才entrypoint不知怎么失败了 改成CMD还得把run拆开#下面这句是开启调试端口 这样就可以在idea里断点调试docker里的java了 我设置的调试端口是9999#ENV JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=9999,suspend=n,server=yEXPOSE 8080
Nginx的Dockerfile: ubuntu-nginx也是我用apt-get安装构建的镜像
FROM ubuntu-nginx# 容器不是真正虚拟机 不可执行service和systemctl 需要CMD启动ADD nginx.conf /etc/nginx/nginx.conf#之前写80:8888 有问题,外部访问不了 改成这样就好了EXPOSE 80CMD ["nginx", "-g", "daemon off;"]
添加了一个Nginx的配置文件到容器里 这样我们就可以在外部管理Nginx配置
nginx.conf如下:
user www-data;worker_processes 4;pid /run/nginx.pid;events { #worker_connections 768; worker_connections 3000; # multi_accept on;}http { ## # Basic Settings ## #test sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; #test #隐藏版本信息 server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; #下面这句会加载一个默认的server进来 需要去掉 不然负载均衡会失败 #include /etc/nginx/sites-enabled/*; upstream tomcats { server tomcat1:8080 weight=1; server tomcat2:8080 weight=1; } server { listen 80; location / { proxy_pass http://tomcats; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }}
一开始我总是转发失败 后来发现是include /etc/nginx/sites-enabled/*;引起的 这句会加载一个默认的server进来 需要去掉 不然负载均衡会失败
upstream配置了一个负载均衡 使用刚才我们link时指定的别名
转发到本地的tomcat8080端口里
upstream tomcats { server tomcat1:8080 weight=1; server tomcat2:8080 weight=1; }
/ 表示将所有流量都转发给tomcats
server { listen 80; location / { proxy_pass http://tomcats; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
最后在docker-compose.yml目录下输入命令 sudo docker-compose up --build
即可构建并启动这三个容器的组合
访问本地localhost:8000 刚才转发出来的端口 这是如果是tomcat的页面 而不是nginx的页面说明转发成功了~
然后再访问部署到tomcat里的war包的目录 不断F5刷新 可以看到负载均衡的情况
到这里就基本完成了~
在docker里使用nginx负载均衡到两个tomcat里 并可以看到对应的返回~
- docker-compose搭建Nginx+Tomcat负载均衡环境
- Nginx搭建Tomcat负载均衡环境
- linux(ubuntu)下搭建nginx,tomcat负载均衡环境搭建
- nginx+tomcat负载均衡搭建
- Nginx+Tomcat搭建负载均衡
- Nginx+Tomcat搭建负载均衡
- Nginx+Tomcat搭建负载均衡
- 搭建nginx+tomcat+Java的负载均衡环境
- 搭建nginx+tomcat+Java的负载均衡环境
- 搭建nginx+tomcat+Java的负载均衡环境
- 搭建nginx+tomcat+Java的负载均衡环境
- 搭建nginx+tomcat+Java的负载均衡环境
- docker compose环境搭建
- docker compose 应用案例 web负载均衡
- Mac 搭建nginx+tomcat 实现负载均衡
- tomcat+nginx搭建服务器负载均衡集群
- VM搭建nginx+tomcat负载均衡
- 搭建Nginx+tomcat负载均衡服务
- python实现验证码生成显示
- Arduino IDE for ESP8266教程
- 【微营销】第4天 微营销实战技巧之微博发布规则
- 100个直接可以拿来用的JavaScript实用功能代码片段
- java jdk win配置环境变量
- docker-compose搭建Nginx+Tomcat负载均衡环境
- 离散题目13
- 今日问题记录-1
- 数组的应用---随机点学号
- 通讯录删除(by id or name or num)
- Cactus UVALive
- Android DataBinding使用总结(一)
- [LeetCode 解题报告]005.Longest Palindromic Substring
- 王怡 | 微读(01-23)