白话tscompose

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

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

ts目录结构树:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
➜  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

常见使用场景
~