Docker, Django и Selenium - Selenium не может подключиться

У меня есть Docker, настроенный для запуска Postgres и Django с помощью docker-compose.yml, и он работает нормально.

Проблема в том, что у Selenium нет возможности подключиться к живому серверу Django.

Теперь имеет смысл (по крайней мере для меня), что django должен иметь доступ к селену для управления браузером, а селен должен иметь доступ к django для доступа к серверу.

Я попытался использовать шаблон «посол» docker, используя следующую конфигурацию для docker-compose.yml отсюда:https://github.com/docker/compose/issues/666

postgis:
  dockerfile: ./docker/postgis/Dockerfile
  build: .
  container_name: postgis

django-ambassador:
  container_name: django-ambassador
  image: cpuguy83/docker-grand-ambassador
  volumes:
    - "/var/run/docker.sock:/var/run/docker.sock"
  command: "-name django -name selenium"

django:
  dockerfile: ./docker/Dockerfile-dev
  build: .
  command: python /app/project/manage.py test my-app
  container_name: django
  volumes:
    - .:/app
  ports:
    - "8000:8000"
    - "8081:8081"
  links:
    - postgis
    - "django-ambassador:selenium"
  environment:
    - SELENIUM_HOST=http://selenium:4444/wd/hub

selenium:
  container_name: selenium
  image: selenium/standalone-firefox-debug
  ports:
    - "4444:4444"
    - "5900:5900"
  links:
    - "django-ambassador:django"

Когда я проверяюHttp: // DOCKER-MACHINE-IP: 4444 / WD / концентратор / статический / ресурс / hub.html Я вижу, что Firefox запускается, но все тесты не проходят, так как Firefox не может подключиться к Django

'Firefox can't establish a connection to the server at localhost:8081'

Я также попробовал это решение здесьhttps://github.com/docker/compose/issues/1991 однако это не работает, потому что я не могу подключить django к postgis и selenium одновременно

'django.db.utils.OperationalError: could not translate host name "postgis" to address: Name or service not known'

Я пытался использовать сетевую функцию, как указано ниже

postgis:
  dockerfile: ./docker/postgis/Dockerfile
  build: .
  container_name: postgis
  net: appnet

django:
  dockerfile: ./docker/Dockerfile-dev
  build: .
  command: python /app/project/manage.py test foo
  container_name: django
  volumes:
    - .:/app
  ports:
    - "8000:8000"
    - "8081:8081"
  net: appnet
  environment:
    - SELENIUM_HOST=http://selenium:4444/wd/hub

selenium:
  container_name: selenium
  image: selenium/standalone-firefox-debug
  ports:
    - "4444:4444"
    - "5900:5900"
  net: appnet

но результат тот же

'Firefox can't establish a connection to the server at localhost:8081'

Итак, как я могу получить селен для подключения к Django?

Я играл с этим в течение нескольких дней - был бы очень признателен за любую помощь.

Больше информации

Еще одна странная вещь в том, что когда тестовый сервер работаетне используя docker (используя мой старый конфиг virtualenv и т. д.), если я запускаю ./manage.py test foo, я могу получить доступ к серверу через любой браузер по адресуHTTP: // локальный: 8081 и получить доступ к веб-страницам, но я не могу получить доступ к тестовому серверу, когда я запускаю эквивалентную команду, если я запускаю его в Docker. Это странно, потому что я сопоставляю порт 8081: 8081 - это связано?

Примечание: я использую OSX и Docker v1.9.1

Ответы на вопрос(3)

Ваш ответ на вопрос