TestNG docker-compose не может найти URL локального хоста

#docker-compose #dockerfile

#docker-compose #dockerfile

Вопрос:

У меня есть эта конфигурация docker-compose

 version: '3'
services:
  selenoid:
    image: "aerokube/selenoid:latest"
    container_name: selenoid
    ports:
      - "0.0.0.0:4444:4444"
    networks:
      - selenoid
    volumes:
      - ".:/etc/selenoid"
      - "./target:/output"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./target:/opt/selenoid/video"
    environment:
      - "OVERRIDE_VIDEO_OUTPUT_DIR=$PWD/target"
    command: ["-limit", "10", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-container-network", "selenoid"]
  selenoid-ui:
    image: "aerokube/selenoid-ui:latest"
    container_name: selenoid-ui
    links:
      - selenoid
    ports:
      - "8083:8080"
    networks:
      - selenoid
    command: ["--selenoid-uri", "http://selenoid:4444"]
  chrome_79.0:
    image: "selenoid/vnc:chrome_79.0"
    container_name: chrome_79.0
    links:
      - selenoid
      - selenoid-ui
    depends_on:
      - selenoid
      - selenoid-ui
    networks:
      - selenoid
    volumes:
      - "/dev/shm:/dev/shm"
  sent:
    image: "sent:1.0"
    container_name: sent
    links:
      - selenoid
      - selenoid-ui
    depends_on:
      - selenoid
      - selenoid-ui
    networks:
      - selenoid
networks:
  selenoid:
    external:
      name: selenoid
 

send — это контейнер, который запускает тесты TestNG, но, похоже, не может найти URL локального хоста.

Если я проверю открытые порты, я увижу это

 chrome_79.0   /entrypoint.sh                   Up                      4444/tcp              
selenoid      /usr/bin/selenoid -listen  ...   Up                      0.0.0.0:4444->4444/tcp
selenoid-ui   /selenoid-ui --selenoid-ur ...   Up (health: starting)   0.0.0.0:8083->8080/tcp
 

И я могу получить доступ к localhost: 4444 извне, но даже контейнер, находящийся в той же сети, не может получить доступ к localhost.

Есть идеи?

Ответ №1:

Ну, я немного изменил ваш файл docker, и он работает =)

  1. Удалите chrome_79.0 и все, что находится под

Потому что вы можете выполнить загрузку изображения Chrome напрямую:

 docker pull selenoid/vnc:chrome_79.0
 
  1. Удалите все ваши «сети» (также из раздела команд)
     networks:
       -selenoid
     

и добавьте вместо этого (не добавляйте в раздел команд)

  network_mode: bridge 
         
 

т.е

 image: "aerokube/selenoid:latest"    
network_mode: bridge
    .
    .
    .
image: "aerokube/selenoid-ui:latest"
network_mode: bridge
 

3. Перед записью видео я предлагаю вам посмотреть, как это работает без записи …

Просто измените раздел «Объемы». Я использую Mac, и в моей ситуации это выглядит так

  volumes: 
  - "$PWD:/etc/selenoid"
  - "/var/run/docker.sock:/var/run/docker.sock"
  - "$PWD:/opt/selenoid/logs"
 

4.Выполнить

   docker-compose up
  docker pull selenoid/vnc:chrome_79.0
 

5.См. Список изображений и контейнеров

 CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                 PORTS                    NAMES
ef60d57bc743        aerokube/selenoid-ui:latest   "/selenoid-ui --sele…"   2 hours ago         Up 2 hours (healthy)   0.0.0.0:8083->8080/tcp   selenoid-ui
05bf58b73f53        aerokube/selenoid:latest      "/usr/bin/selenoid -…"   2 hours ago         Up 2 hours             0.0.0.0:4444->4444/tcp   selenoid

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
aerokube/selenoid-ui   latest              71ad7fb4efa7        5 days ago          17.5MB
aerokube/selenoid      latest              b8f47d114751        11 days ago         16.3MB
selenoid/vnc           chrome_65.0         dff07a4cfe6d        2 years ago         959MB
 

6.Откройте

 http://localhost:8083
 

Веселье

PS. Если не работает, спросите меня напрямую.