变量替换
通过使用docker-compose.yml
和rancher-compose.yml
文件,您可以引用机器上的环境变量。 如果机器上没有环境变量,它将用空白字符串替换。 Rancher
将会提示一个警告,指出哪些环境变量没有设置。 如果使用环境变量作为镜像标签时,请注意,rancher
不会从镜像中自动删除:
来获取latest镜像。 因为镜像名,比如<镜像名>:
是一个无效的镜像名,所以不会部署成功。用户需要确定机器中所有的环境变量的有效性。
例子
在我们运行的机器上,我们有一个环境变量IMAGE_TAG = 14.04
。
例子: docker-compose.yml
- version: '2'
- services:
- ubuntu:
- image: ubuntu:$IMAGE_TAG
- 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 %}
- version: '2'
- services:
- web:
- image: nginx
- {{- if eq .Values.PUBLIC "true" }}
- ports:
- - 8000
- {{- else }}
- expose:
- {{- end }}
{% endraw %}
rancher-compose.yml
config.yml
- name: "Nginx Application"
- 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 %}
- # notemplating
- version: '2'
- services:
- web:
- image: nginx
- labels:
- key: "{{`{{ value }}`}}"
{% endraw %}