Kaynağa Gözat

update by krrish

krrish 7 yıl önce
ebeveyn
işleme
7f6a1603ad

+ 4 - 0
05-常见问题处理FAQ/02-如何合并分支,什么时候合并.md

@@ -1,9 +1,13 @@
 
 现在分支开发后,需要注意,如何把这些修改合并至 master 上去,什么时候合等。
 
+# 1. 如何合并分支
+
 添加参数,要在 Git 中添加以下几个位置后,再刷新应用商店生效:
 
   1. rancher-compose 中 增加 question 段,此目的是让应用商店中有这些默认值 ,也可以按需修改
   2. docker-compose 中,要引入上一个 question 中的 变量​,如果不引入就不会生效
   3. answer.txt 文件。这个文件提供自动化部署默认值。
 
+
+# 2. 合并时间

+ 47 - 6
05-常见问题处理FAQ/02-如何将配置文件变量动态化.md

@@ -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 文件。这个文件提供自动化部署默认值。
 
+![rancher-compose 中的 question](images/_ranchercom_1533021120_22815.png)
 
-# 3. 刷新应用商店 
+![docker-compose 中接受变量](images/_dockercomp_1533021156_703.png)
+
+# 2. 修改本地 SVN 的文件
+
+  Docker 化的网元中,有个 /docker/conf/ 文件夹,里面所放的任何文件(不管有没有后缀),都可以引入变量,如下图中 ① 所示。
+  根据这个配置文件类型(并非所有配置文件都使用 # 来注释,例如 Json 就不行),添加`可行的注释`, 显式的指明 配置文件最终的路径,格式如下图中 ② 所示。
+
+```conf
+# metadata => location:${APP_HOME}/${APP_NAME}/conf/evlss.conf
+```
+
+![需要动态化的配置文件样例](images/_需要动态化的配置文件_1533020452_3853.png)
+
+# 3. 变量的传递流程
+
+## 3.1. 从应用商店部署
+
+![](images/_1533022508_26958.png)
+
+  - 应用部署页面将用户定义的 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.1-1](images/_图311_1533021622_4181.png)
+
+
+![图 3.1-2](images/_图312_1533022107_8928.png)
+
+## 3.2. 从 Jenkins 上自动化部署
+
+Jenkins 自动化部署,由于没有了应用商店 WEB 部署页面,因此所有变量必须得通过 `answer.txt` 文件进行传递,Rancher 提供了一个 Rancher API 的命令行工具 [rancher-compose](https://github.com/rancher/rancher-compose) ,此工具最终调用官方的 docker-compose 将容器部署至指定的服务器上。
+
+
+> 注意:  Git 中的文件如果要修改后`即时生效`,需要`手动刷新应用商店`来生效。默认 Rancher 会每隔 30 分钟自动刷新一次

BIN
05-常见问题处理FAQ/images/_1533022508_26958.png


BIN
05-常见问题处理FAQ/images/_dockercomp_1533021156_703.png


BIN
05-常见问题处理FAQ/images/_ranchercom_1533021120_22815.png


BIN
05-常见问题处理FAQ/images/_图311_1533021622_4181.png


BIN
05-常见问题处理FAQ/images/_图312_1533022107_8928.png


BIN
05-常见问题处理FAQ/images/_需要动态化的配置文件_1533020452_3853.png