Ich verwende Docker 1.12 und Docker-Compose 1.12, unter OSX.kann keine Verbindung zum Container herstellen mit docker-compose
ich eine Docker-compose.yml-Datei erstellt, die zwei Container läuft:
- der erste, mit dem Namen Funke, baut und betreibt eine sparkjava Anwendung
die zweite, mit dem Namen verhalten, läuft einige Funktionstests auf der API, die vom ersten Container bereitgestellt wird.
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"
Als recommended by Docker Compose documentation, verwende ich einen einfachen Shell-Skript zu testen, ob der Funke-Server bereit ist. Dieses Skript hat den Namen runtest.sh und wird in den Container "benehmen" geschrieben. Es wird von docker-compose gestartet (siehe oben):
#!/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
```
Die DNS-Auflösung scheint nicht zu funktionieren. curl stellt eine Anfrage an spark.com statt einer Anfrage an meinen Container namens "spark".
UPDATE:
Durch einen Alias für meine Linksetzung (links: -spark:myserver
), habe ich die DNS-Auflösung von Docker nicht getan gesehen: Ich habe eine Fehlermeldung von einem Firmennetzwerk Ausrüstung erhalten (ich bin Führen Sie dies hinter einem Unternehmens-Proxy, mit Docker für Mac). Hier ein Auszug der Ausgabe:
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, ich glaube nicht, dass Sie das 'links' Eintrag benötigen. * Links ermöglichen es Ihnen, zusätzliche Aliase zu definieren, mit denen ein Dienst von einem anderen Dienst erreichbar ist. * – R0MANARMY
Es ist nicht, was ich hier lese: https://docs.docker.com/compose/compose-file/#/links. Ich habe es versucht, aber es hat mein Problem nicht gelöst. –
Ich habe meine Antwort gelöscht, da sie für Ihre bearbeitete Frage nicht mehr gilt. Erwägen Sie, Protokolle Ihrer Skriptausgabe und andere Befehle zum Testen von DNS (z. B. Ping) einzubeziehen, um das Problem entweder auf DNS oder auf Locken zu beschränken. – BMitch