Docker, Django e Selenium - o Selenium não pode se conectar

Eu tenho o Docker configurado para executar o Postgres e o Django usando o docker-compose.yml e está funcionando bem.

O problema que estou tendo é que o Selenium não consegue se conectar ao servidor do Django.

Agora faz sentido (pelo menos para mim) que o django precise acessar o selenium para controlar o navegador e o selenium tenha que acessar o django para acessar o servidor.

Tentei usar o padrão 'embaixador' do docker usando a seguinte configuração para o docker-compose.yml a partir daqui: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"

Quando eu checohttp: // DOCKER-MACHINE-IP: 4444 / wd / hub / static / resource / hub.html Eu posso ver que o firefox é iniciado, mas todos os testes falham porque o firefox não consegue se conectar ao django

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

Eu também tentei esta solução aquihttps://github.com/docker/compose/issues/1991 no entanto, isso não está funcionando porque não consigo fazer com que o django se conecte ao postgis e ao selênio ao mesmo tempo

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

Tentei usar o recurso de rede conforme listado abaixo

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

Mas o resultado é o mesmo

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

Então, como posso obter o selênio para conectar-se ao django?

Estou brincando com isso há dias - realmente aprecio qualquer ajuda.

Mais informações

Outra coisa estranha é que, quando o servidor de testes está sendo executadonão usando docker (usando minha antiga configuração de virtualenv etc.), se eu executar ./manage.py test foo, posso acessar o servidor através de qualquer navegador emhttp: // localhost: 8081 e ser exibido nas páginas da web, mas não consigo acessar o servidor de teste quando executo o comando equivalente se o executar no docker. Isso é estranho, porque estou mapeando a porta 8081: 8081 - isso está relacionado?

Nota: Estou usando o OSX e o Docker v1.9.1

questionAnswers(3)

yourAnswerToTheQuestion