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