|
@@ -1,11 +1,52 @@
|
|
|
|
|
|
-# 1. 修改 rancher-compose
|
|
|
+# 1. Git 上需要修改的文件
|
|
|
|
|
|
- 1. rancher-compose 中 增加 question 段,此目的是让应用商店中有这些默认值 ,也可以按需修改
|
|
|
- 2. docker-compose 中,要引入上一个 question 中的 变量,如果不引入就不会生效
|
|
|
- 3. answer.txt 文件。这个文件提供自动化部署默认值。
|
|
|
|
|
|
-# 2. 修改 docker-compose
|
|
|
+ 1. 在 rancher-compose 中 增加 question 段,每个 question 都包含 variable、type、default 等值。variable 就是用户需要指定的**变量**。
|
|
|
+ 2. 在 docker-compose 中,`引入`上一个 question 中的 变量。如果不引入,rancher-compose 中新增的变量就无法传送给容器。
|
|
|
+ 3. 修改 answer.txt 文件。这个文件提供自动化部署默认值。
|
|
|
|
|
|
+
|
|
|
|
|
|
-# 3. 刷新应用商店
|
|
|
+
|
|
|
+
|
|
|
+# 2. 修改本地 SVN 的文件
|
|
|
+
|
|
|
+ Docker 化的网元中,有个 /docker/conf/ 文件夹,里面所放的任何文件(不管有没有后缀),都可以引入变量,如下图中 ① 所示。
|
|
|
+ 根据这个配置文件类型(并非所有配置文件都使用 # 来注释,例如 Json 就不行),添加`可行的注释`, 显式的指明 配置文件最终的路径,格式如下图中 ② 所示。
|
|
|
+
|
|
|
+```conf
|
|
|
+# metadata => location:${APP_HOME}/${APP_NAME}/conf/evlss.conf
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 3. 变量的传递流程
|
|
|
+
|
|
|
+## 3.1. 从应用商店部署
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ - 应用部署页面将用户定义的 Question `翻译`并展示变量表单,提示用户输入变量,如用户不输入,使用变量中默认值
|
|
|
+ - 点击部署后,Rancher 会解析 rancher-compose.yml 文件,解析其中的变量和输入值
|
|
|
+ - docker-compose 会将变量注入至 environment 中,启动容器时,变量会出现在 container 的 `环境变量`中,可在容器中通过 `set` 或 `echo` 等命令,直接获取这些变量的值
|
|
|
+ - 容器启动后,会进入应用启动入口:/usr/local/bin/start.sh,可参考 dockerfile 中的 `CMD` 或 `ENTRYPOINT` 字段,参考 图 3.1-1
|
|
|
+ - start.sh 中会做如下检查:
|
|
|
+ - 检查 /docker/conf/ 中的文件,是否有 `metadata` 信息(没有路径信息,脚本不知道最终需要将配置文件替换后拷贝向哪里)
|
|
|
+ - 检查 /docker/conf/ 中的文件,是否里面所有的变量,都接收到了环境变量中的变量值(空值也是值,没有就不行。。)
|
|
|
+ - 将所有的变量,替换成对应的值,如将 {{ .ENV.MAX_CONNECTIONS }} 替换为 8000
|
|
|
+ - 检查 Dockerfile 中指定的依赖项,是否已启动完成,没有完成就等待 1200 秒,直到超时退出
|
|
|
+ - 以上条件都满足后,开始启动应用了,调用 Service_Start 启动应用
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## 3.2. 从 Jenkins 上自动化部署
|
|
|
+
|
|
|
+Jenkins 自动化部署,由于没有了应用商店 WEB 部署页面,因此所有变量必须得通过 `answer.txt` 文件进行传递,Rancher 提供了一个 Rancher API 的命令行工具 [rancher-compose](https://github.com/rancher/rancher-compose) ,此工具最终调用官方的 docker-compose 将容器部署至指定的服务器上。
|
|
|
+
|
|
|
+
|
|
|
+> 注意: Git 中的文件如果要修改后`即时生效`,需要`手动刷新应用商店`来生效。默认 Rancher 会每隔 30 分钟自动刷新一次
|