Docker搭建disconf环境,三部曲之三:细说搭建过程 (3)

在tomcat文件夹下新增Dockerfile文件,内容如下:

# Docker image of disconf tomcat # VERSION 0.0.1 # Author: bolingcavalry #基础镜像使用tomcat:7.0.77-jre8 FROM tomcat:7.0.77-jre8 #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #定义工作目录 ENV TOMCAT_BASE /usr/local/tomcat #复制配置文件 COPY ./server.xml $TOMCAT_BASE/conf/ #复制war包 COPY ./disconf-web.war $TOMCAT_BASE/webapps/ #给配置文件增加读权限 RUN chmod a+xr $TOMCAT_BASE/conf/server.xml #删除默认的ROOT文件件 RUN rm -rf $TOMCAT_BASE/webapps/ROOT

看的出Dockerfile做的事情并不多,就是复制war包,复制server.xml,删除默认的ROOT应用文件夹这些事情;

现在打开终端在tomcat目录下执行以下命令,构建tomcat镜像:

docker build -t conf_tomcat:0.0.1 .

tomcat镜像构建成功!

构建nginx镜像

新建一个nginx目录,在里面新增一个nginx.conf文件,内容如下:

user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } 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 65; #gzip on; #include /etc/nginx/conf.d/*.conf; upstream disconf { server tomcathost:8080; } server { listen 80; server_name localhost; access_log logs/disconf_access.log; error_log logs/disconf_error.log; location / { root /usr/local/work/html; if ($query_string) { expires max; } } location ~ ^/(api|export) { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass ; } } }

主要的配置有三点:

将默认的/etc/nginx/conf.d/*.conf配置注释掉;
增加tomcat的host信息,“tomcathost”和后面docker run的link参数的别名保持一致;
动静分离的配置,请求url中如果带有api和export,nginx就把请求转发到tomcathost:8080,其他的请求直接访问nginx服务器的/usr/local/work/html文件夹;

在环境变量WAR_ROOT_PATH对应的目录下,有个html文件夹如下图红框位置,这是web工程全部静态文件,把这个文件夹复制到刚才新建的nginx目录下:

这里写图片描述

在nginx文件夹下新增Dockerfile文件,内容如下:

# Docker image of disconf nginx # VERSION 0.0.1 # Author: bolingcavalry #基础镜像使用nginx:stable FROM nginx:stable #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #定义工作目录 ENV WORK_PATH /usr/local/work/html #定义nginx配置文件所在目录 ENV NGINX_CONF_DIR /etc/nginx #定义nginx配置文件名称 ENV NGINX_CONF_FILE_NAME nginx.conf #创建工作文件夹 RUN mkdir -p $WORK_PATH #创建nginx日志文件夹 RUN mkdir -p /etc/nginx/logs/ #复制nginx配置文件 COPY ./$NGINX_CONF_FILE_NAME $NGINX_CONF_DIR/ #复制网页的静态资源文件 COPY ./html $WORK_PATH/ #给配置文件增加读权限 RUN chmod a+xr $NGINX_CONF_DIR/$NGINX_CONF_FILE_NAME

现在打开终端在nginx目录下执行以下命令,构建nginx镜像:

docker build -t conf_nginx:0.0.1 .

nginx镜像构建成功!

编写docker-compose脚本

新增一个docker-compose.yml文件(位置无所谓),内容如下:

version: '2' services: disconf_redis_1: image: daocloud.io/library/redis restart: always disconf_redis_2: image: daocloud.io/library/redis restart: always disconf_zookeeper: image: zookeeper:3.3.6 restart: always disconf_mysql: image: conf_mysql:0.0.1 environment: MYSQL_ROOT_PASSWORD: 123456 restart: always disconf_tomcat: image: conf_tomcat:0.0.1 links: - disconf_redis_1:redishost001 - disconf_redis_2:redishost002 - disconf_zookeeper:zkhost - disconf_mysql:mysqlhost restart: always disconf_nginx: image: conf_nginx:0.0.1 links: - disconf_tomcat:tomcathost ports: - "80:80" restart: always

按照我们最初梳理的依赖关系,启动两个redis官方镜像,一个zookeeper官方镜像,再启动定制的msyql镜像,然后tomcat启动并通过link关联redis,zookeeper,mysql等容器,最后是定制的nginx启动,link关联tomcat,并且nginx容器的80端口映射到当前电脑的80端口;

启动所有容器

在docker-compose.yml文件所在的目录下,执行命令:

docker-compose up -d

终端会显示正在启动各个容器,如下图,每个容器的名称会被docker-compose加上前缀和后缀:

这里写图片描述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjwxy.html