变量替换


    通过使用docker-compose.ymlrancher-compose.yml文件,您可以引用机器上的环境变量。 如果机器上没有环境变量,它将用空白字符串替换。 Rancher将会提示一个警告,指出哪些环境变量没有设置。 如果使用环境变量作为镜像标签时,请注意,rancher不会从镜像中自动删除:来获取latest镜像。 因为镜像名,比如<镜像名>:是一个无效的镜像名,所以不会部署成功。用户需要确定机器中所有的环境变量的有效性。

    例子

    在我们运行的机器上,我们有一个环境变量IMAGE_TAG = 14.04

    例子: docker-compose.yml

    1. version: '2'
    2. services:
    3. ubuntu:
    4. image: ubuntu:$IMAGE_TAG
    5. stdin_open: true

    在Rancher中,一个ubuntu服务将使用ubuntu:14.04镜像来部署。

    Rancher支持与’docker-compose’相同的格式。

    docker-compose.yml里面,Rancher能够支持使用,这样我们可以在docker-compose.yml里面使用逻辑条件语句。

    模板可以与Rancher CLI一起使用,也可以与应用商店组合使用,这样可以让您配置您的应用商店模板,也可以让您根据答案来改变您的模板文件。

    例子

    如果您希望能够生成一个在内部暴露端口或者在外部暴露端口的服务,那么您可以设置逻辑条件来实现这样的功能。 在这个例子中,如果public变量设置为ture,那么下面的8000端口将对外开放。 否则,这些端口将在expose下开放。在我们的示例中,默认值为true。

    docker-compose.yml

    {% raw %}

    1. version: '2'
    2. services:
    3. web:
    4. image: nginx
    5. {{- if eq .Values.PUBLIC "true" }}
    6. ports:
    7. - 8000
    8. {{- else }}
    9. expose:
    10. {{- end }}

    {% endraw %}

    rancher-compose.yml

    config.yml

    1. name: "Nginx Application"
    2. version: v0.0.1

    应用栈名称替换

    从Rancher v1.6.6开始,我们支持在docker-compose.yml文件中替换{% raw %} {{ .Stack.Name }} {% endraw %}。这样可以在compose文件中使用应用栈名称。

    示例 docker-compose.yml

    {% raw %}

    {% endraw %}

    如果您通过Rancher命令行来创建应用,例如rancher up -s myawesomestack -f docker-compose.yml,那么这个应用将会创建一个带有标签stack-name=myawesomestack的服务。

    注意: 替换只是发生在应用栈创建时,之后对应用名称的修改无法触发替换。

    双括号使用

    随着Rancher引入了模板系统,双括号 {% raw %}({{ or ){% endraw %} 将被视为模板的一部分。如果您不想将这些字符转换为模板,您可以在包含字符的compose文件的顶部添加上#notemplating

    {% raw %}

    1. # notemplating
    2.  
    3. version: '2'
    4. services:
    5. web:
    6. image: nginx
    7. labels:
    8. key: "{{`{{ value }}`}}"

    {% endraw %}