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代理配置的更多相关文章

  1. docker,构建nginx反向代理tomcat

    Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...

  2. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

  3. nginx+tomcat安装配置

    nginx+tomcat安装配置 # nginx+tomcat安装配置 #创建网站目录 mkdir -p /www/wwwroot cd /www #安装配置 wget http://mirrors. ...

  4. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  5. nginx 正向代理配置

    需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...

  6. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  7. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  8. Nginx反向代理配置可跨域

    由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...

  9. spring-boot+nginx+tomcat+ssl配置笔记

    如果你的tomcat应用需要采用ssl来加强安全性,一种做法是把tomcat配置为支持ssl,另一种做法是用nginx反向代理tomcat,然后把nginx配置为https访问,并且nginx与tom ...

随机推荐

  1. 激活函数之ReLU/softplus介绍及C++实现

    softplus函数(softplus function):ζ(x)=ln(1+exp(x)). softplus函数可以用来产生正态分布的β和σ参数,因为它的范围是(0,∞).当处理包含sigmoi ...

  2. 【python】socket

    UDP udp_server.py from datetime import datetime import socket server_address = ('localhost', 6789) m ...

  3. 使用js构造"ddMMMyy"格式的日期供postman使用(最low的方式)

    var date = new Date(); date.setDate(date.getDate() + 10); var year = date.getFullYear().toString().s ...

  4. 重温CLR(六)方法和参数

    实例构造器和类(引用类型) 构造器是将类型的实例初始化为良好状态的特殊方法.构造器方法在“方法定义元数据表”中始终叫做.ctor(constructor的简称).创建引用类型的实例时,首先为实例的数据 ...

  5. Web应用程序与Web网站及部署在IIS中

    在Visual Studio可以创建 Web 应用程序项目或网站项目.通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单. 通过选择 新建网 ...

  6. lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)

    前提:已经安装好 lvs+nginx+tomcat_1.tomcat_2+redis环境 ,可参考 (略有改动,比如tomcat_1.tomcat_2安装在两台机器上,而不是单机多实例 ,自行稍稍变动 ...

  7. [Err] 1067 - Invalid default value for 'xxxTime'

    下面是导入sql脚本的的局部脚本 `xxxTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 发现是NO_ZERO_IN_DATE,NO_Z ...

  8. Android Studio----- 无法打印---log----问题总结----华为坑深(转)

    问题描述:安卓真机调试时 System.out.println 无法输出, err则可以:Log.e,w可以,但其他不行. 解决方法,按如下方式查看酷派手机默认设置日志未warn方式. 酷派手机: * ...

  9. poj 3128 Leonardo's Notebook——思路(置换)

    题目:http://poj.org/problem?id=3128 从环的角度考虑. 原来有奇数个点的环,现在点数不变: 原来有偶数个点的环(设有 k 个点),现在变成两个大小为 k/2 的环. 所以 ...

  10. (转)App工程结构搭建:几种常见Android代码架构分析

    关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的. 从艺术的角度看,其实我们是在追求一种美. 本文先分析几个当 ...