Docker Compose 一键部署Nginx代理Tomcat集群
目录结构
[root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx_tomcat/ ├── docker-compose.yml ├── mysql │ ├── conf │ │ └── my.cnf │ └── data ├── nginx │ ├── Dockerfile │ ├── nginx-1.12.1.tar.gz │ └── nginx.conf ├── tomcat │ ├── apache-tomcat-8.0.46.tar.gz │ ├── Dockerfile │ ├── jdk-8u181-linux-x64.tar.gz │ └── server.xml └── webapps └── ROOT └── index.jsp 7 directories, 10 files
一、创建Nginx Compose
1、创建DockerCompose项目目录
mkdir compose_nginx_tomcat
cd compose_nginx_tomcat/
1.2、创建nginx管理目录
mkdir nginx
cd nginx
1.3、将nginx源码包下载到本地
- Nginx-1.12.1
- 下载地址:https://pan.baidu.com/s/1IAdODW63jbpwbQX992coYg
- 密码:p89j
1.4、创建Dockerfile文件
vim Dockerfile
# 指定镜像 FROM centos:6 # 指定管理员 MAINTAINER xiangsikai # 执行命令安装编译库文件 RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel # 添加解压nginx包到/tmp目录下 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 # 启动容器Nginx服务,指定全局命令daemon off保证服务在前台运行不会关闭 CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
1.5、创建nginx.conf配置文件
vim 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 '$upstream_addr $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; # 代理三台tomcat服务 upstream www.example.com { #ip_hash; server tomcat01:8080; server tomcat02:8080; server tomcat03:8080; } # 动静分离 server { listen 80; server_name localhost; # 动态请求转发给tomcat处理 location / { proxy_pass http://www.example.com; } # 静态资源请求交给nginx处理 location ~ \.(html|css|js|jpg|png|gif)$ { root /opt/webapps/ROOT; } } }