美文网首页
使用多容器分离应用程序和外部依赖

使用多容器分离应用程序和外部依赖

作者: Daniels_Cai | 来源:发表于2018-01-15 16:28 被阅读24次

应用程序除了可执行程序和配置文件之外, 还有一类特殊的依赖,比如 商业软件的License文件, 苹果手机消息推送所需要的证书文件。 这类文件有如下的特性

  1. 不是项目源代码的一部分,不应该和源代码放在一起
  2. 更新周期固定,且比较长,一般是1-3年才需要更新一次。
  3. 文件体积较小。

为什么不能放在源代码中?

以商业软件的Licence文件为例, 当License 到期后, 需要运维到生产环境中使用新的License文件替换旧的文件, 这项变更是一项纯运维工作, 无需开发发布新版本。 如果将License文件放在源代码中,就需要开发发布新版本。

那么如何管理这些配置文件

推荐方法是

  • 使用一个新的镜像,专门存放License文件,
  • 然后将这个镜像以volume 的形式挂载到 原应用程序的容器中。
  • 当License更新时,更新这个镜像即可 .

详细步骤

0. 基本信息

以添加一个 License文件为例,

  1. license 文件名为 mosek.lic
  2. 应用程序名称为 invest-brain

原始docker-compose 文件

  invest-brain:
    image: registry-ci.datayes.com/mom-web/mof-uranus:3.18.3-1306

1. 准备镜像

准备如下文件,Dockerfile , mosek.lic

Dockerfile 的内容为

FROM registry.datayes.com/cache/alpine:latest
MAINTAINER Daniels Cai
ADD mosek.lic /root/mosek/mosek.lic

docker build 之后,我们得到一个 docker镜像, 名称为 registry.datayes.com/base/invest-brain-lic-base:1-249

2. 准备 docker-compose

docker-compose中添加 invest-brain-license , 并设置 volumes, 将 /root/mosek 目录暴露出来

  invest-brain-license:
    image: registry.datayes.com/base/invest-brain-lic-base:1-249
    stdin_open: true
    tty: true
    volumes:
    - /root/mosek/

从invest-brain 中挂在这个容器的 volume

  invest-brain:
    image: registry-ci.datayes.com/mom-web/mof-uranus:3.18.3-1306
    volumes_from:
    - invest-brain-license
    labels:
      io.rancher.sidekicks: invest-brain-license    

修改之后的 docker-compose 文件如下

  invest-brain-license:
    image: registry.datayes.com/base/invest-brain-lic-base:1-249
    stdin_open: true
    tty: true
    volumes:
    - /root/mosek/
  invest-brain:
    image: registry-ci.datayes.com/mom-web/mof-uranus:3.18.3-1306
    volumes_from:
    - invest-brain-license
    labels:
      io.rancher.sidekicks: invest-brain-license

注意, 需要添加 sidekicks 的 label , 来保证 两个容器一定会被调度在同一台主机上

3. 更新生产环境

当License 文件更新时, 我们按照以上步骤重新生成新镜像, 需要做一下两件事

  1. 手动在生产环境中更新该镜像到最新版.
  2. 更新docker-compose 文件, 保证下一次发布新版本时,使用的是最新license文件.

相关文章

  • 使用多容器分离应用程序和外部依赖

    应用程序除了可执行程序和配置文件之外, 还有一类特殊的依赖,比如 商业软件的License文件, 苹果手机消息推送...

  • Q&A-05 Spring

    1、 IoC 和 DI 依赖注入 DI 是从应用程序的角度在描述:应用程序依赖容器创建并注入它所需要的外部资源; ...

  • IOC简介

    IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护 DI:依赖注...

  • docker-compose的安装和卸载

    使用docker-compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 docker 的应用程序...

  • IOC解析

    IOC概述 IOC: 控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护...

  • Docker Compose实战

    一. 简介Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 ...

  • Docker入门 - 1.环境搭建

    概念 Docker是开发人员和系统管理员使用容器 开发,部署和运行 应用程序的平台。使用Linux容器部署应用程序...

  • docker-compose 常用命令

    作用 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YM...

  • 【Docker】Ubuntu 18.04安装docker-com

    Compose是用于定义和运行多容器Docker应用程序的工具。 通过Compose,我们可以使用YAML文件来配...

  • IoC(二)容器基本原理

    2.2.1 IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化、定位、配置应用程序中的...

网友评论

      本文标题:使用多容器分离应用程序和外部依赖

      本文链接:https://www.haomeiwen.com/subject/curdoxtx.html