目录结构如下

mysql/conf/my.cnf
[mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock pid-file=/var/run/mysql/mysql.pid log_error=/var/log/mysql/error.log character_set_server = utf8 max_connections=3600
nginx/Dockerfile
FROM centos:6 MAINTAINER lizhenliang RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel ADD nginx-1.12.1.tar.gz /tmp RUN cd /tmp/nginx-1.12.1 && ./configure --prefix=/usr/local/nginx && make -j 2 && make install RUN rm -f /usr/local/nginx/conf/nginx.conf COPY nginx.conf /usr/local/nginx/conf EXPOSE 80 CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
nginx/nginx.conf
user root;
worker_processes auto;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
upstream www.example.com {
#ip_hash;
server tomcat01:8080;
server tomcat02:8080;
server tomcat03:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://www.example.com;
}
location ~ .(html|css|js|jpg|png|gif)$ {
root /opt/webapps/ROOT;
}
}
}
tomcat/Dockerfile
FROM centos:6 MAINTAINER lizhenliang ADD jdk-8u45-linux-x64.tar.gz /usr/local ENV JAVA_HOME /usr/local/jdk1.8.0_45 ADD apache-tomcat-8.0.46.tar.gz /usr/local COPY server.xml /usr/local/apache-tomcat-8.0.46/conf EXPOSE 8080 ENTRYPOINT ["/usr/local/apache-tomcat-8.0.46/bin/catalina.sh", "run"]
docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 80:80
links:
- tomcat01:tomcat01
- tomcat02:tomcat02
- tomcat03:tomcat03
volumes:
- ./webapps:/opt/webapps
depends_on:
- mysql
- tomcat01
- tomcat02
- tomcat03
tomcat01:
hostname: tomcat01
build: ./tomcat
links:
- mysql:mysql-db
volumes:
- ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
tomcat02:
hostname: tomcat02
build: ./tomcat
links:
- mysql:mysql-db
volumes:
- ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
tomcat03:
hostname: tomcat03
build: ./tomcat
links:
- mysql:mysql-db
volumes:
- ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
mysql:
hostname: mysql
image: mysql:5.6
ports:
- 3306:3306
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: user123
构建在后台运行
docker-compose up -d
webapps的ROOT目录放一个jsp文档index.jsp
启动后访问测试

其实后端是三台tomcat提供服务
进入nginx容器修改nginx配置文件
docker exec -it compose_nginx_tomcat_nginx_1 bash
添加内容显示后端代理的地址

PS:修改后需要退出容器使用docker-compose restart重启才能使配置生效,在容器内重启nginx不生效
刷新即可看到负载均衡
停止运行的容器
docker-compose stop