2
我在OSX上使用碼頭1.12和碼頭構成1.12。無法連接到容器與碼頭構成
我創建了運行兩個集裝箱碼頭工人,compose.yml文件:
- 第一,命名火花,構建並運行一個應用程序sparkjava
第二,命名的行爲,運行一些功能測試在由第一個容器暴露的API上。
version: "2" services: behave: build: context: ./src/test container_name: "behave" links: - spark depends_on: - spark entrypoint: ./runtests.sh spark:9000 spark: build: context: ./ container_name: "spark" ports: - "9000:9000"
由於recommended by Docker Compose documentation,我用一個簡單的shell腳本來測試,如果火花服務器已準備就緒。該腳本名稱爲runtest.sh,並運行到名爲「behave」的容器中。它由docker-compose發佈(見上):
#!/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
```
DNS解析似乎不起作用。 curl向spark.com發出請求,而不是對名爲「spark」的容器的請求。
UPDATE:
通過設置一個別名,我的鏈接(links: -spark:myserver
),我見過的DNS解析不是由碼頭工人做:我收到一條錯誤消息從公司網絡設備(我使用Docker for Mac從企業代理的後面運行此操作)。下面是輸出的摘錄:
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
FWIW,我不認爲你需要的'links'條目。 *鏈接允許您定義額外的別名,通過它可以從另一個服務訪問服務。* – R0MANARMY
這不是我在這裏閱讀的:https://docs.docker.com/compose/compose-file/#/links。然而,我嘗試過,但它並沒有解決我的問題。 –
我刪除了我的答案,因爲它不再適用於您編輯的問題。考慮包括腳本輸出的日誌,以及其他命令來測試DNS(例如ping)以將問題隔離到DNS或捲曲。 – BMitch