0

当我构建 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”之类的东西。

4

1 回答 1

1

根据docker_image 文档,有一个选项与命令行选项dockerfile完全类似。-f所以你只需要:

- name: Build test image
  docker_image:
    path: /docker/build_env/
    name: test_build
    tag: v0
    dockerfile: centos6-fresh/Dockerfile
于 2016-10-27T13:12:41.807 回答