docker-compose之Nginx+Tomcat代理配置
Tomcat镜像制作与启动
Dockerfile如下
FROM docker.io/sssllc/centos7.-jdk1. #update
RUN yum -y update; yum clean all && yum install -y wget unzip tar net-tools #install jdk && tomcat
#ADD jdk-8u151-linux-x64.tar.gz /usr/local/ #原始镜像不存在jdk环境是使用(上下文有这个文件存在)
ADD tomcat7.tar.gz /usr/local/ #设置环境变量
#ENV JAVA_HOME /usr/local/jdk1..0_151 #如果有jdk环境的话略过
#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.
#ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ENV LC_ALL en_US.UTF-8 #防止乱码 EXPOSE CMD /usr/local/apache-tomcat-7.0./bin/catalina.sh run
build镜像
docker build -t tomcat7 .
启动tomcat并将镜像push到私有仓库
//启动
docker run -itd -p : --name tomcat1 -v /data/admin-web/:/data/webapp tomcat7 #/data/webapp为tomcat代码发布目录 //push到私有仓库
docker tag tomcat7 10.10.10.12/hztest/tomcat7-jdk1.8 #首先打标签
docker push 10.10.10.12/hztest/tomcat7-jdk1.
nginx镜像配置
pull原始镜像
docker pull registry.cn-hangzhou.aliyuncs.com/kkf_centos7/nginx
自定义镜像,dockerfile如下
FROM registry.cn-hangzhou.aliyuncs.com/kkf_centos7/nginx COPY nginx.conf /etc/nginx/nginx.conf EXPOSE
nginx.conf如下
user nginx;
worker_processes ; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections ;
} http {
include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on;
tcp_nopush on; keepalive_timeout ;
types_hash_max_size ;
gzip on; #include /etc/nginx/conf.d/*.conf;
#负载均衡,下面的tomcat01和tomcat02为nginx连接tomcat容器时给容器设置的别名的名称,即配置文件写啥名,link指定的别名就为啥名
upstream tomcat_client {
server tomcat01:8080 weight=1;
server tomcat02:8080 weight=1;
} server {
server_name "";
listen 80 default_server;
listen [::]:80 default_server ipv6only=on; location / {
proxy_pass http://tomcat_client; #反向代理
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
build 打包并push到私有仓库
docker build -t nginx .
docker tag nginx 10.10.10.12/hztest/nginx
docker push 10.10.10.12/hztest/nginx
启动所有容器
#注意:如果需要查看日志,需要加上log目录的映射,log目录查看dockerfile和nginx配置文件即可得到 //启动tomcat容器(两个)
docker run -itd -p :8080 --name tomcat1 -v /data/admin-web/:/data/webapp tomcat7
docker run -itd -p : --name tomcat2 -v /data/admin-web/:/data/webapp tomcat7 //启动nginx容器,指定--link,会在nginx的容器hosts文件里生成一条tomcat容器的host记录,格式为 tomcat1容器ip 容器名(tomcat1) 容器别名(tomcat02) tomcat容器主机名(containerid)
docker run --name nginx --link=tomcat1:tomcat01 --link=tomcat2:tomcat02 -p : -idt nginx #link下 第一个tomcat1为 tomcat1容器的容器名,第二个tomcat1为此容器的别名。在nginx配置文件里指定的别名
docker-compose
创建docker-compose.yml文件
version: ''
services:
nginx1:
container_name: nginx
image: 10.10.10.12/hztest/nginx
links: #links这里tomcat1为容器名,tomcat01为tomcat1的别名。nginx连接tomcat1的配置文件里,写tomcat01即可
- tomcat1:tomcat01
- tomcat2:tomcat02
ports:
- "80:80"
volumes:
- /data/logs/nginx:/var/log/nginx/
depends_on: #依赖redis启动才能启动tomcat,可忽略
- tomcat01
- tomcat02
restart: always tomcat1:
container_name: tomcat1
image: 10.10.10.12/hztest/tomcat7-jdk1.
ports:
- "8081:8080"
volumes:
- /data/admin-web:/data/webapp
- /data/logs/admin/tomcat1:/usr/local/apache-tomcat-7.0./logs
environment:
TOMCAT_SERVER_ID: tomcat_server_001 depends_on: #依赖redis起来后才能启动tomcat,如果没有可忽略
- redis restart: always tomcat2:
container_name: tomcat2
image: 10.10.10.12/hztest/tomcat7-jdk1.
ports:
- "8082:8080"
volumes:
- /data/admin-web:/data/webapp
- /data/logs/admin/tomcat2:/usr/local/apache-tomcat-7.0./logs
environment:
TOMCAT_SERVER_ID: tomcat_server_002 depends_on: #依赖redis起来后才能启动tomcat,如果没有可忽略
- redis
- rabbitmq
- mongodb restart: always
启动
docker-compose up #前台启动 docker-compose up -d #后台启动 docker-compose restart #重启
docker-compose之Nginx+Tomcat代理配置的更多相关文章
- docker,构建nginx反向代理tomcat
Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...
- nginx反向代理配置及优化
nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...
- nginx+tomcat安装配置
nginx+tomcat安装配置 # nginx+tomcat安装配置 #创建网站目录 mkdir -p /www/wwwroot cd /www #安装配置 wget http://mirrors. ...
- nginx反向代理配置实例分享
nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...
- nginx 正向代理配置
需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...
- Docker Compose部署 nginx代理Tomcat集群
一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- spring-boot+nginx+tomcat+ssl配置笔记
如果你的tomcat应用需要采用ssl来加强安全性,一种做法是把tomcat配置为支持ssl,另一种做法是用nginx反向代理tomcat,然后把nginx配置为https访问,并且nginx与tom ...
随机推荐
- 学习Java有没有什么捷径?
很多网友咨询学习Java有没有什么捷径,我说“ 无他,唯手熟尔 ”.但是愿意将一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛! 要想学好Java,首先要知道Java的大致分类. 我们知道, ...
- C++11新特性之右值引用(&&)、移动语义(move)、完美转换(forward)
1. 右值引用 个人认为右值引用的目的主要是为了是减少内存拷贝,优化性能. 比如下面的代码: String Fun() { String str = "hello world"; ...
- 【模板】NOIP模板汇总
图论 数据结构 数学 其他: 洛谷模板:a,b两个字符串,求b串在a串中出现的位置 #include<iostream> #include<cstdio> #include&l ...
- ALTERA DDRII IP核使用
提到DDRII,大家应该都不陌生,DDRII SDRAM是第二代双倍速率同步动态RAM.今天小编给大家介绍一下QUARTUS II 下调用DDRII软核. 新建QUARTUSII工程之后,在tool下 ...
- FPGA前世今生(二)
上期我们介绍了关于FPGA内部最基本的结构,在quartus下可以看到整体的结构. 这是在平面规划图下看到的结构,其中蓝色的小格代表一个LAB.四周边上浅棕色的小格代表IO口. 这是一个LAB的内部结 ...
- 【转】jmeter实践
目录(?)[-] Jmeter相关概念简介 应用实例 AbApacheBench对比 本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和 ...
- JS面向对象编程,对象,属性,方法。
document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v ...
- Oracle 常见hint
Hints 应该慎用,收集相关表的统计信息,根据执行计划,来改变查询方式 只能在SELECT, UPDATE, INSERT, MERGE, or DELETE 关键字后面,只有insert可以用2个 ...
- 23 mysql怎么保证数据不丢失?
MySQL的wal机制,得到的结论是:只要redo log和binlog 持久化到磁盘,就能确保mysql异常重新启动后,数据是可以恢复的. binlog的写入机制 其实,binlog的写入逻辑比较简 ...
- python开发mysql:视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...