白话tscompose

白话tscompose

需要说明几点: 1.tscompose基于docker-compose进行进一步定制,使其能完成dapeng的服务开发=>构建=>发布=>启动整套流程 2.scompose的每个命令可以看作是一组命令的集合,只是简化了操作,做了部分逻辑优化 3.tscompose在使用前需要设置两个环境变量

nodeName=sandbox           nodeName,从字面来理解是节点名称,这个名称是至关重要的,下面的多项配置都会使用到此环境变量
COMPOSE_WORKSPACE=/data/workspace/      COMPOSE_WORKSPACE的指定了在tscompose使用时(特别是在测试阶段需要频繁构建),服务源代码存储的位置

ts目录结构树:

➜  tscompose git:(master) ✗ tree .
├── .envs 				   此目录下都是环境变量
│   ├── application.env    一般情况下服务的所有数据库连接信息都在本文件内(文件内容可由 initEnvs/develop.env初始化)
│   └── common.env         针对服务的一些通用配置参数,通常是很少变动的配置(如通用的环境变量,文件内容可由initEnvs/common.env初始化)
├── .gitignore
├── .local-sandbox.ini     需要手动建立,文件内容为当前节点ip地址(host_ip=xxxx),建立规则为[.local-{nodeName}.ini],其中{nodeName}就是环境变量中的nodeName的值
├── .local.gitid.ini       记录服务源代码的最后一次commit对应的id前7位(由./scompose s-update-gid更新此文件)
├── .local.ini             文件内容可由initEnvs/develop.ini 或者 production.ini 初始化
├── .version.ini           记录升级内容
├── README.md
├── dc-all.yml             所有的服务(容器)配置都会在此文件中,具体配置内容下面详解
├── dc-app-2.yml
├── dc-ci.yml
├── dc-demo1.yml
├── dc-local-sandbox.yml
├── dc-monitor.yml
├── dc-pos-demo.yml
├── dc-proxy.yml           文件内容决定了当前节点启动的服务有哪些,文件建立规则dc-{nodename}.yml
├── dc-sandbox1.yml
├── dc-sandbox2.yml
├── dc-sandbox3.yml
├── dc-sandbox4.yml
├── dc-web.yml
├── initEnvs		       针对所有的节点,此文件夹内文件可初始化(.envs/application.env && .envs/common.env && .local.ini)三个文件
│   ├── common.env         当执行sh prepare.sh develop 或者 production 将copy此文件到.envs/common.env
│   ├── develop.env        当执行sh prepare.sh develop 或者 production 将copy此文件到.envs/application.env
│   ├── develop.ini        当执行sh prepare.sh develop 将copy此文件到.local.ini
│   └── production.ini     当执行sh prepare.sh production 将copy此文件到.local.ini
├── prepare.sh             通常用于初始化配置,命令 sh prepare.sh [develop|production|test]
├── scompose               核心脚本,所有基础命令入口,./scompose 可查看命令帮助
└── shell                  一些常用脚本,现未使用
    ├── allApiProjects.log
    ├── cleanImages.sh
    ├── convertFilesToShell.sh
    ├── installAllApiProjects.sh
    ├── pullBaseImage.sh
    ├── rebuildLocalServices.sh
    ├── runUnittest.sh
    └── updatedApi.log

常见使用场景 ~