Docker撰写和ansible:site.yml似乎不是一个文件

我build立一个docker-compose服务,在我的应用程序开始testing之前探测我的数据库服务。 docker-compose文件工作得很好,我只是用Docker机器创build了一个新的主机,现在运行时出现错误:

docker-compose up agent 

这是我的docker-compose.yml

 test: build: ../../ dockerfile: docker/dev/Dockerfile volumes_from: - cache links: - db environment: DJANGO_SETTINGS_MODULE: todobackend.settings.test MYSQL_HOST: db MYSQL_USER: root MYSQL_PASSWORD: password TEST_OUTPUT_DIR: /reports builder: build: ../../ dockerfile: docker/dev/Dockerfile volumes: - ../../target:/wheelhouse volumes_from: - cache entrypoint: "entrypoint.sh" command: ["pip", "wheel", "--no-index", "-f /build", "."] agent: image: pjestrada/ansible volumes: - ../../ansible/probe.yml:/ansible/site.yml links: - db environment: PROBE_HOST: "db" PROBE_PORT: "3306" db: image: mysql:5.6 hostname: db expose: - "3306" environment: MYSQL_ROOT_PASSWORD: password cache: build: ../../ dockerfile: docker/dev/Dockerfile volumes: - /tmp/cache:/cache - /build entrypoint: "true" 

我的剧本:

 --- - name: Probe Host hosts: localhost connection: local gather_facts: no tasks: - name: Set facts set_fact: probe_host: "{{ lookup('env', 'PROBE_HOST') }}" probe_port: "{{ lookup('env', 'PROBE_PORT') }}" probe_delay: "{{ lookup('env', 'PROBE_DELAY') | default(0, true) }}" probe_timeout: "{{ lookup('env', 'PROBE_TIMEOUT') | default (180, true) }}" - name: Message debug: msg: > Probing {{ probe_host }}:{{ probe_port }} with delay={{ probe_delay }}s and timeout={{ probe_timeout }}s - name: Waiting for hosts to respond... local_action: > wait_for host={{ probe_host }} port={{ probe_port }} delay={{ probe_delay }} timeout={{ probe_timeout }} 

和我的可靠的Dockerfile:

 FROM ubuntu:trusty MAINTAINER Pablo Estrada <pjestradac@gmail.com> # Prevent dpkg errors ENV TERM=x-term-256color RUN sed -i "s/http:\/\/archive./http:\/\/nz.archive./g" /etc/apt/sources.list #Install ansible RUN apt-get update -qy && \ apt-get install -qy software-properties-common && \ apt-add-repository -y ppa:ansible/ansible && \ apt-get update -qy && \ apt-get install -qy ansible # Add voulme for Ansible Playbooks Volume /ansible WORKDIR /ansible #Entrypoint ENTRYPOINT ["ansible-playbook"] CMD ["site.yml"] 

我得到的错误说:错误! playbook:site.yml似乎不是一个文件

我不明白为什么会发生这种情况,如果我将我的泊坞窗撰写文件中的probe.yml映射到site.yml。 我的图像有什么问题吗? 谢谢您的帮助。

UPDATE

当我启动docker机器并使用时,会发生问题

 eval $(docker-machine env) 

这是我的docker机信息:

 default * virtualbox Running tcp://192.168.99.100:2376 v1.12.1 

当所有的工作,我没有任何docker机与docker主机。 这里会发生什么?

很可能你已经指定了一个probe.yml的path,这个path并不存在于虚拟机上, probe.yml (有帮助)创build了一个目录并为你装载。

 ○ →ls -l total 8 -rw-r--r-- 1 user staff 110 13 Sep 05:26 docker-compose.yml ○ →docker-compose run agent ansible-playbook site.yml ERROR! the playbook: site.yml does not appear to be a file ○ →ls -l total 8 -rw-r--r-- 1 user staff 110 13 Sep 05:26 docker-compose.yml drwxr-xr-x 2 user staff 68 13 Sep 05:31 site.yml 

您在本地使用的目录可能不会共享给虚拟机? 尽pipe如果情况确实如此,你应该有更多的不仅仅是agent失败。

从Linux共享本地虚拟机

引用git回购

如果还不清楚,Linux主机支持目前是朦胧的。

这听起来像共享/home作为共享文件夹称为/Users将允许您的主目录自动安装在本地的Docker虚拟机。 如果你创build了一个名为/Users /home的链接,并从那里运行你的docker命令,这将使目录path在虚拟机和本地机器上看起来都是一样的,Docker应该很开心。

 ln -s /home /Users VBoxManage sharefolder add "default" --name "/Users" --hostpath "/Users" cd /Users/you/project eval $(docker-machine env default) docker-compose run whatever