我在OSX上使用docker 1.12和docker-compose 1.12。
我创建了一个docker-compose.yml文件,它运行两个容器:
第二个名为behave,对第一个容器公开的API运行一些功能测试。
#!/bin/bash
# This scripts waits for the API server to be ready before running functional tests with Behave
# the parameter should be the hostname for the spark server
set -e
host="$1"
echo "runtests host is $host"
until curl -L "http://$host"; do
>&2 echo "Spark server is not ready - sleeping"
sleep 5
done
>&2 echo "Spark server is up - starting tests"
behave
```
作为recommended by Docker Compose documentation,我使用一个简单的shell脚本来测试spark服务器是否准备就绪。此脚本名称为runtest.sh,并运行到名为“behave”的容器中。它由docker-compose发起(见上文):
links: -spark:myserver
DNS解析似乎不起作用。 curl向spark.com发出请求,而不是向我的名为“spark”的容器发出请求。
更新
通过为我的链接(Recreating spark
Recreating behave
Attaching to spark, behave
behave | runtests host is myserver:9000
behave | % Total % Received % Xferd Average Speed Time Time Time Current
behave | Dload Upload Total Spent Left Speed
100 672 100 672 0 0 348 0 0:00:01 0:00:01 --:--:-- 348
behave | <HTML><HEAD>
behave | <TITLE>Network Error</TITLE>
behave | </HEAD>
behave | <BODY>
behave | ...
behave | <big>Network Error (dns_unresolved_hostname)</big>
behave | Your requested host "myserver" could not be resolved by DNS.
behave | ...
behave | </BODY></HTML>
behave | Spark server is up - starting tests
)设置别名,我看到Docker没有完成DNS解析:我收到了来自公司网络设备的错误消息(我是从后面运行的企业代理,使用Docker for Mac)。以下是输出摘录:
{{1}}
答案 0 :(得分:0)
为了解决这个问题,我为我想要加入的容器的名称添加了一个环境变量no_proxy
。
在容器行为的dockerfile中,我有:
ENV http_proxy=http://proxy.mycompany.com:8080
ENV https_proxy=http://proxy.mycompany.com:8080
ENV no_proxy=127.0.0.1,localhost,spark