无法通过docker集装箱执行完善的手册

Im在Docker容器中的jenkins上执行pipe道。 这个pipe道调用另一个docker-compose文件来执行一个完整的剧本。 执行剧本的服务称为代理,定义如下:

agent: image: pjestrada/ansible links: - db environment: PROBE_HOST: "db" PROBE_PORT: "3306" command: ["probe.yml"] 

这是它使用的图像:

 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 # Copy baked in playbooks COPY ansible /ansible # Add voulme for Ansible Playbooks Volume /ansible WORKDIR /ansible RUN chmod +x / #Entrypoint ENTRYPOINT ["ansible-playbook"] CMD ["site.yml"] 

我的本地机器是Ubuntu 16.04,当我运行docker docker-compose up agent ,plabook成功执行。 然而,当im在jenkins容器im在相同的命令调用得到这个错误。

 Attaching to todobackend9dev_agent_1 [36magent_1 | [0mERROR! the playbook: site.yml does not appear to be a file 

这是我的jenkins容器的图像和撰写文件:

 FROM jenkins:1.642.1 MAINTAINER Pablo Estrada <pjestradac@gmail.com> # Suppress apt installation warnings ENV DEBIAN_FRONTEND=noninteractive # Change to root user USER root # Used to set the docker group ID # Set to 497 by default, which is the group ID used by AWS Linux ECS Instance ARG DOCKER_GID=497 # Create Docker Group with GID # Set default value of 497 if DOCKER_GID set to blank string by Docker Compose RUN groupadd -g ${DOCKER_GID:-497} docker # Used to control Docker and Docker Compose versions installed # NOTE: As of February 2016, AWS Linux ECS only supports Docker 1.9.1 ARG DOCKER_ENGINE=1.10.2 ARG DOCKER_COMPOSE=1.6.2 # Install base packages RUN apt-get update -y && \ apt-get install apt-transport-https curl python-dev python-setuptools gcc make libssl-dev -y && \ easy_install pip # Install Docker Engine RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | tee /etc/apt/sources.list.d/docker.list && \ apt-get update -y && \ apt-get purge lxc-docker* -y && \ apt-get install docker-engine=${DOCKER_ENGINE:-1.10.2}-0~trusty -y && \ usermod -aG docker jenkins && \ usermod -aG users jenkins # Install Docker Compose RUN pip install docker-compose==${DOCKER_COMPOSE:-1.6.2} && \ pip install ansible boto boto3 # Change to jenkins user USER jenkins # Add Jenkins plugins COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt 

撰写文件:

 version: '2' volumes: jenkins_home: external: true services: jenkins: build: context: . args: DOCKER_GID: ${DOCKER_GID} DOCKER_ENGINE: ${DOCKER_ENGINE} DOCKER_COMPOSE: ${DOCKER_COMPOSE} volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock ports: - "8080:8080" 

为了从我的jenkins容器访问docker socket,我放了一个卷。 但是,由于某些原因林不能访问我所需要的剧本,即使在容器外的文件是可用的site.yml文件。

任何人都可以帮我解决这个问题吗?