基于阿里云容器服务的微服务实践 - Part 2. Docker Compose

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/54968156

基于阿里云容器服务的微服务实践 - Part 2. Docker Compose

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs

二、使用Compose定义微服务

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,它允许在单个文件中定义多个容器应用以及这些应用所需的各种依赖,然后通过单个命令完成执行。Docker Compose在实际工作中非常有价值,随着Docker Compose的不断完善,有成为取代docker run命令启动Docker容器的趋势。使用Compose,开发者可以使用Compose文件配置应用程序的服务。然后,使用单个命令,从配置中创建和启动所有服务。

Docker Compose非常适用于开发,测试和临时环境,以及CI工作流。它的主要特征如下:

  • 单个主机上的多个隔离环境
  • 创建容器时保留卷数据
  • 仅重新创建已发生变更的容器
  • 变量和在环境之间移动组件

Docker Compose使用项目名称来相互隔离环境。开发者可以在多个不同的上下文中使用此项目名称:

  • 在开发主机上,创建单个环境的多个副本
  • 在CI服务器上,为了使构建不会相互干扰,可以将项目名称设置为唯一的内部版本号
  • 在共享主机或开发主机上,可以防止不同的项目使用了相同的服务名所造成的相互干扰

使用Docker Compose基本上有三个步骤:

  1. 定义应用程序的环境Dockerfile,使得它可以在任何地方复制。
  2. 定义组成应用程序的服务docker-compose.yml,以便它们可以在一个隔离的环境中一起运行。
  3. 最后,运行docker-compose up,将启动并运行整个应用程序。

Docker 1.13版引入了v3版的Docker Compose,详见:
https://docs.docker.com/compose/compose-file/#version-3

此版本的改动很少,主要的区别在于引入了deploy属性。Deploy属性允许指定容器的副本、回滚更新、以及重启策略。

本文开发的微服务将会启动一个WildFly应用服务器,WildFly服务器上预部署了一个JavaEE应用,此JavaEE应用可以与Couchbase数据库服务器进行通信,完成应用数据的增删改查等操作。下面先安装Compose。

要安装Compose,步骤如下:

  1. 安装Docker Toolbox。因为Docker Toolbox包含了Docker引擎和Compose,因此对于Mac系统或Windows系统的用户来说,安装Compose只需一步,下面的步骤忽略。
  2. 对于Linux用户来说,先安装Docker引擎
  3. 去Compose的GitHub主页下载发行包,见:https://github.com/docker/compose/releases

    $ curl -L
    https://github.com/docker/compose/releases/download/1.10.0/docker-compose-(unames)(uname -m)” -o /usr/local/bin/docker-compose

  4. 为其赋予可执行权限

    $ chmod +x /usr/local/bin/docker-compose

  5. 测试安装是否正确

    $ docker-compose –version
    docker-compose version: 1.10.0

下面是使用Compose定义的一个例子:

version: '3'
services:
  web:
    image: chszs/couchbase-javaee:travel
    environment:
      - COUCHBASE_URI=db
    ports:
      - 8080:8080
      - 9990:9990
    depends_on:
      - db
  db:
    image: chszs/couchbase:travel
    ports:
      - 8091:8091
      - 8092:8092 
      - 8093:8093 
      - 11210:11210

在上面的Compose文件中,通过db和web属性名定义了两个服务。每一个服务的映像名由image属性进行定义。

映像chszs/couchbase:travel启动Couchbase服务器,并配置它使用Couchbase的REST API,以及载入travel-sample库,这个库是一个大约32KB的JSON文档。

映像chszs/couchbase-javaee:travel启动WildFly应用服务器,并部署应用的war文件。

environment属性定义了应用程序部署到WildFly应用服务器时可以访问的环境变量。COUCHBASE_URI指向数据库服务,这是在应用程序代码中使用。

端口转发则通过ports属性来实现。

在Compose定义文件中的depends_on属性用于确保容器的启动顺序。但是,应用程序级的启动就需要容器内运行的应用程序来确保。在本文的场景中,WildFly应用服务器启动相当快,而数据库的启动则需要数秒钟。这意味着部署在WildFly的JavaEE应用程序在一开始的几秒钟内无法与数据库进行通信。因此depends_on属性就派上用场了。它可以确保在应用程序的初始化过程中,所依赖的微服务已启动,而无需考虑再启动顺序。数据库初始化代码应该执行以下检查:

  1. 存储分区存在
  2. Couchbase数据库的查询服务已经可用
  3. Sample库数据已载入

上面的应用程序可以使用docker-compose up -d命令在单个主机上启动,或者是在Docker引擎的集群下以Swarm模式使用docker stack deploy命令启动它。

想继续阅读文本,请看下一篇《基于阿里云容器服务的微服务实践 - Part 3. 容器微服务实践》

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/671153

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。