【发布时间】:2017-03-10 03:42:12
【问题描述】:
当我构建 docker 映像时,我想在 Dockerfile 中添加指令“COPY”,其目录位于当前构建目录之外(放置 Dockerfile 的位置) - 我正在使用这样的东西:
docker build -f centos6-fresh/Dockerfile -t test/c6-fresh .
现在我想通过 ansible 配置容器和构建 docker 镜像。 当然,我可以使用 shell、命令或原始模块来做到这一点,但我看到了 Docker 的特殊模块。
所以我使用了模块“docker_image”
- name: Build test image
docker_image:
path: /docker/build_env/test
name: test_build
tag: v0
当然我有错误。
是否有任何选项,设置必须从哪个目录开始构建过程?
UPD 我需要这些操作的案例示例:
我有带有 ansible 的管理节点(我的笔记本电脑)和带有容器的 Docker 主机。 Ansible 目录正在使用 git 配置到 Docker 服务器。
通常我在 Docker 主机的 build_env 目录中构建一个镜像:
[root@docker build_env]# ls -1
ansible
centos6-fresh
centos7-fresh
debian8-fresh
templates
test
所以在 ansible 目录中运行“git pull”后,我运行类似
docker build -f centos6-fresh/Dockerfile -t test/c6-fresh .
Dockerfile 包含:
复制 ansible /etc/ansible
正如我们现在一样,docker 会阻止在 COPY 或 ADD 选项中使用“COPY ../ansible”之类的内容。
【问题讨论】:
-
当然,作为一个变体,我可以将 ansible dir 拉入构建目录,在构建映像后我可以运行清理,但我认为这是一个肮脏的钩子
标签: docker ansible ansible-playbook docker-image