【发布时间】:2016-09-13 04:14:48
【问题描述】:
我正在构建一个 docker-compose 服务,它会在开始对我的应用程序进行测试之前探测我的 db 服务是否启动。 docker-compose 文件运行良好,我刚刚使用 docker 机器创建了一个新主机,现在运行时出现错误:
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 }}
还有我的 ansible 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"]
我得到的错误是:错误!剧本:site.yml 似乎不是文件
如果我在我的 docker compose 文件上将 probe.yml 映射到 site.yml,我不明白为什么会发生这种情况。我的图有什么问题吗??感谢您的帮助。
更新
显然,当我启动我的 docker 机器并使用时,问题就会发生
eval $(docker-machine env)
这是我的码头机器信息:
default * virtualbox Running tcp://192.168.99.100:2376 v1.12.1
当一切正常时,我没有使用 docker-machine 安装任何 docker 主机。这里会发生什么?
【问题讨论】: