我正在尝试使用Ansible模板生成Dockerfiles - 请参阅Ansible Galaxy中的角色源和模板以及Github
我需要创建一个标准的Dockerfile行,如:
...
VOLUME ["/etc/postgresql/9.4"]
...
但是,当我把它放在输入文件中时:
...
instruction: CMD
value: "[\"/etc/postgresql/{{postgresql_version}}\"]"
...
它最终呈现为:
...
VOLUME ['/etc/postgresql/9.4']
...
我失去了“(这使得Dockerfiles无用)
有任何帮助吗?我如何说服Jinja不要替换“with”?我尝试过 \“, | safe 过滤器,甚至 {%raw%} - 它只是继续这样做!
更新 以下是重现此问题的方法:
从 galaxy.ansible.com 或Github获取 peruncs.docker 角色(上面给出了链接) 用以下内容写一个简单的剧本(比如 demo.yml )并运行: ansible-playbook -v demo.yml 。 -v 选项将允许您查看生成的 Dockerfile 与破坏的内容一起使用的临时目录,以便您可以检查它。生成docker镜像并不重要,只需尝试使Dockerfile正确。
- name: Build docker image
hosts: localhost
vars:
- somevar: whatever
- image_tag: "blabla/booboo"
- docker_copy_files: []
- docker_file_content:
- instruction: CMD
value: '["/usr/bin/runit", "{{somevar}}"]'
roles:
- peruncs.docker
提前致谢!