2016-11-09 5 views
2

Я использую докер 1.12 и докер-состав 1.12, на OSX.не может подключиться к контейнеру с помощью docker-compose

Я создал файл докер-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, я использую простой скрипт, чтобы проверить, если искра сервер готов. Этот скрипт является именем runtest.sh и запускается в контейнер с именем «behave». Он запускается с помощью докер-компоновки (см. Выше):

#!/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 для 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 
+1

FWIW, я не думаю, что вам нужно 'запись links'. * Ссылки позволяют определить дополнительные псевдонимы, с помощью которых услуга доступна из другой службы. * – R0MANARMY

+0

Это не то, что я читаю здесь: https://docs.docker.com/compose/compose-file/#/links. Я попытался, однако, но это не решило мою проблему. –

+0

Я удалил свой ответ, поскольку он больше не применяется к вашему отредактированному вопросу. Подумайте о включении журналов вывода вашего сценария и других команд для проверки DNS (например, ping), чтобы изолировать проблему до DNS или завитка. – BMitch

ответ

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 
Смежные вопросы