使用docker部署nginx+tomcat架构(3):使用docker-compose简化部署操作

经历了之前的两篇,我们已经大体上了解了docker部署容器的过程。

使用docker部署nginx+tomcat架构
使用docker部署nginx+tomcat架构(2):访问mysql数据库

不过,整个部署过程中需要手动输入很多的docker命令,稍显繁琐并且容易出错。那么有没有一种相对简洁优雅的方式来完成这些部署工作呢?答案是有的,docker-compose(一下简称“compose”)正是为此而生。

关于docker-compose(了解更多:https://docs.docker.com/compose/):

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。

“compose”的安装过程这里就不详述了,不过个人推荐通过pip进行安装,具体安装过程可百度得知。

下面就让我们来使用“compose”完成之前的部署工作,看看“compose”是怎么简化操作的。

先看一个配置文件docker-compose.yml:

version: "3"
services:
    mysql:
        image: mysql:5.7
        restart: always
        container_name: mysql
        ports:
            - "3306:3306"
        volumes:
            - ~/mysql/conf:/etc/mysql/conf.d
            - ~/mysql/data:/var/lib/mysql
            - ~/mysql/logs:/var/log/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=admin

    tomcat1:
        image: tomcat
        container_name: tomcat1
        volumes:
            - ~/tomcat/conf:/usr/local/tomcat/conf
            - ~/tomcat/webapps:/usr/local/tomcat/webapps
        depends_on:
            - mysql
        links:
            - mysql

    tomcat2:
        image: tomcat
        container_name: tomcat2
        volumes:
            - ~/tomcat/conf:/usr/local/tomcat/conf
            - ~/tomcat/webapps:/usr/local/tomcat/webapps
        depends_on:
            - mysql
        links:
            - mysql

    nginx:
        image: nginx
        container_name: nginx
        ports:
            - "80:80"
        volumes:
            - ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
            - ~/nginx/www:/usr/share/nginx/html
            - ~/nginx/logs:/var/log/nginx
        links:
            - tomcat1
            - tomcat2

关于compose配置文件的详细解释请参看:https://docs.docker.com/compose/compose-file/

这里简单说下,docker-compose.yml是“compose”的默认配置文件,“compose”就是通过这个文件对docker容器进行快速编排、部署管理的。配置文件遵循YAML语法,并且由三个核心部分组成:version、services和networks(本篇没有用到)。

version指明当前版本,目前主要有1,2,3三个大版本,每个版本都跟docker-engine有着对应关系。大体的对应关系如下:

services定义了用于部署的服务(容器),以配置文件中的mysql为例进行说明:

image              指定容器镜像及其版本
container_name     设置容器名称
ports              配置容器的端口映射
volumes            绑定宿主机的本地路径到容器
environment        预设容器的环境变量

tomcat1中还有depends_on和links,这是两个很有使用的配置项。

depends_on         通过依赖关系按顺序启动docker服务
links              将依赖的服务以hosts形式注册到容器

我们知道在部署软件的时候,时常要考虑个组件之间的依赖关系。比如tomcat如果想访问数据库,必须要先启动mysql(当然也可以是其他数据库)。在传统的做法中,一般依赖于软件实施人员手动进行控制和确认,但是“compose”提供了depends_on配置项就解决了这个问题,只需配置好依赖的docker服务,“compose”就会在部署时优先启动被依赖的服务。使用过spring的同学应该能够理解,这就是容器间的“依赖注入”啊。

至于links这个配置项,就更是利器了。在之前的篇章中,我们都是在mysql部署后通过“docker inspect mysql|grep IPAddress”查看mysql的IP,然后再修改tomcat中关于mysql的配置,这样的方式非常的不智能并且麻烦。但是通过links配置项,容器在启动过程中会自动将所依赖的docker服务(容器)的IP注册到hosts(/etc/hosts)中,那么容器启动后可通过相应的环境变量访问docker服务,免去了手动配置的痛苦。??

*nginx的配置文件负载均衡部分修改成(tomcat1和tomcat2以hosts的形式被注册到nginx容器中):

upstream tomcat {
      server tomcat1:8080;
      server tomcat2:8080;
}

*tomcat关于mysql的配置修改成(mysql以hosts的形式被注册到tomcat容器中):

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="mysql/test"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://mysql:3306/test"
        username="root"
        password="admin"
        maxActive="20"
        maxIdle="10"
        maxWait="10000" />
</Context>

除上述所提到的,“compose”还提供了很多配置项,具体的就请自己通过官方文档去了解吧。

好了,大体上介绍了配置文件的具体含义,那么接下来就让我们操作下,来看看实际效果。

在配置文件所在目录,执行命令:docker-compose up -d

OK,that‘s all。结束了,就是这么简单,我们之前废了半天劲才做好的部署工作,这么一条语句就搞定了。??

docker-compose你有什么理由不爱呢?

原文地址:https://www.cnblogs.com/lichmama/p/11386192.html

时间: 2024-10-01 00:27:54

使用docker部署nginx+tomcat架构(3):使用docker-compose简化部署操作的相关文章

使用docker部署nginx+tomcat架构(2):访问mysql数据库

上一篇完成了通过docker部署nginx+tomcat的基础软件架构,但是距离一个真正可用的软件架构还差得很远.其中最重要的一点是缺少数据库这个角色的存在,那么本篇就来完善这一点. 废话少说,直接进入正题. 首先拉取mysql镜像: docker pull mysql:5.7 创建本地mysql目录: mkdir -p ~/mysql/data ~/mysql/conf ~/mysql/logschmod -R 777 ~/mysql/logs 在mysql/conf目录下创建配置文件my.c

Docker 部署 nginx + tomcat

简介 在生产环境中,很多企业会经常使用nginx + tomcat 架构,nginx作为负载均衡器,反向代理,tomcat作为节点服务器.在docker容器中也可以使用这种架构.对这种架构感兴趣的可以参考博客:https://blog.51cto.com/13760351/2161850 操作环境 备注:实验中已关闭防火墙,打好企业使用的war包 部署过程: 一.安装nginx镜像 可参考博客 https://blog.51cto.com/13760351/2469063 二.部署war包项目

Docker + redis + nginx + tomcat

Docker + redis + nginx + tomcat 环境 pc机 机器 192.168.1.242 系统 [[email protected] ~]# uname -a Linux hdp-gp-dk02 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]#  cat /etc/redhat-release Red

Nginx + Tomcat 反向代理 负载均衡 集群 部署指南

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53535435 Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器.也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能.而最常见的就是使用Nginx实现负载均衡. Nginx与其他服务器的性能比较: Tomcat服务器面向Java语言,是重量级的服务器,而N

Docker构建Nginx+Tomcat动静分离架构

随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1)    启动docker镜像 查看当前系统存在的镜像,我这里为centos6.6,大家可以参考我第一篇文章进行下载相应的镜像文件,然后启动. 启动方式如下:   docker run -i -t  centos6.6:v2 /bin/bash 然后进入新的docker容器里,查看ip为172.17.0.6

docker-compose入门示例:一键部署 Nginx+Tomcat+Mysql

整体环境配置 整体环境的配置,如果一个一个 Dockerfile 去写,那么是相当麻烦的,好在 Docker 有一个名为 Docker-Compose 的工具提供,我们可以使用它一次性完成整体环境的配置: 首先我们看看 docker-compose.yml 配置文件的内容:version: "3"services:  mysql:    container_name: mysql    image: 192.168.1.30:5000/mysql:5.7                

Docker 下 nginx + tomcat 负债均衡

nginx 的安装请参考Docker 安装 nginx 并挂载宿主目录到容器中 多个 tomcat 安装 按照Docker 安装 tomcat 并挂载宿主目录到容器中 方式,启动三个 tomcat,宿主端口分别为 8081,8082,8083.同时在宿主的 home/ubuntu/tomcat/ 分别创建 service1 , service2,service3 目录,并在该目录下创建 webapps 目录,同时把 war 包放在该目录下. service1: docker run --name

公开课视频-《第03章 部署-IT基础架构》-大企业云桌面部署实战-在线培训-视频(奉献)

********************************** 在线-培训班-视频:(已完结) ********************************** 2017-03-25-第01章 规划.mp4 2017-03-28-第02章 准备-环境.mp4 2017-04-16-第03章 部署-IT基础架构.mp4 链接:http://pan.baidu.com/s/1hrDDFbm 密码:hgdw ********************************** 公开课已讲课程

linux企业常用服务---部署Nginx+Tomcat负载均衡集群

部署前准备: iptables和selinux不做配置,关掉 系统光盘作为yum源,配置yum文件 源码包准备jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz 注意源码包存放位置要与脚本中相互对应 环境介绍: 一台nginx,两台tomcat 分别在后端tomcat1和tomcat2上配置: [[email protected] ~]# vi install_tomcat.sh #!/bin/bash ##by linuxfan ########