2016-03-18 36 views
11

Tôi có tệp docker-compose mà tôi đã nâng cấp từ phiên bản 1 lên phiên bản 2.Vùng chứa không được liên kết với phiên bản docker-compose 2

Nó thiết lập một hub Selenium đơn giản với nút firefox.

Khi tôi thiết lập nó làm phiên bản 1, nó khởi chạy tốt. Khi tôi thiết lập nó với phiên bản 2, container ff trả về "Not linked with a running Hub container" và thoát.

Khi tôi nghiên cứu và hiểu nó, là sự liên kết giữa các thùng chứa bằng cách nào đó bị ảnh hưởng.

Có giải pháp nào không ?? Tui bỏ lỡ điều gì vậy ??

version: '2' 
services: 
    hub: 
    container_name: hub 
    image: selenium/hub 
    ports: 
     - "8080:4444" # HOST:CONTAINER 
    expose: 
     - "4444" 

    ff: 
    container_name: ff 
    image: selenium/node-firefox 
    links: 
     - hub 
    expose: 
     - "5555" 

Trả lời

26

Thêm một biến môi trường để phần ff bạn của Docker Soạn tập tin (và bạn có thể loại bỏ các liên kết):

ff: 
    container_name: ff 
    image: selenium/node-firefox 
    environment: 
    - HUB_PORT_4444_TCP_ADDR=hub 
    expose: 
    - "5555" 

Soạn phiên bản 2 sử dụng một phong cách khác nhau của mạng. Từ số upgrading guide:

biến môi trường được tạo bởi links đã không được dùng cho một số thời gian . Trong hệ thống mạng Docker mới, chúng đã bị xóa. Bạn phải kết nối trực tiếp với tên máy chủ thích hợp hoặc tự đặt biến môi trường có liên quan bằng cách sử dụng tên máy chủ liên kết.

Từ networking documentation:

links không cần phải cho phép các dịch vụ giao tiếp - bằng mặc định, bất kỳ dịch vụ có thể đạt được bất kỳ dịch vụ nào khác tại tên của dịch vụ đó.

Selenium dockerfile sử dụng mạng kiểu phiên bản 1 theo biến ENV. Ở đây trong code, nếu biến đó không được thiết lập (mà Docker được sử dụng để làm) lệnh exit_point.sh thoát. Cung cấp biến rõ ràng giải quyết điều này.

+0

Cảm ơn đã phản ứng JCotton. Tôi phải thừa nhận rằng tôi đã đọc tài liệu về docker mà bạn liên kết, nhiều lần. Nó không phải là rõ ràng khái niệm bạn giải thích rất tốt đẹp. Tôi đã theo dõi vấn đề với đường thẳng mà bạn không thể làm được. Nó hoạt động hoàn hảo. Cảm ơn một lần nữa! –

+0

Tôi cũng phải thêm một điều mà tôi nhận thấy khi chuyển đổi từ v1 đến v2 soạn tập tin. Hãy coi chừng thay đổi mạng để các vùng chứa IP cũng thay đổi. Điều gì trong v1 có thể là 172.17.0.3, trong v2 trở thành 172.18.0.4. Nó làm tôi đau đầu cho đến khi tôi tìm ra. –

+0

Tương tự tại đây. Docker có nhiều khía cạnh và thay đổi quá nhanh. Người thông minh đang thực hiện những cải tiến tốt nhưng khó hiểu mọi thứ nếu bạn không làm việc toàn thời gian. (Vui mừng điều này đã giúp. Hãy xem xét [upvoting] (http: // meta.stackexchange.com/a/5235/142472).^_ ^) – JCotton

0

Dưới soạn tập tin làm việc cho tôi

# To execute this docker-compose yml file use docker-compose -f <file_name> up 
# Add the "-d" flag at the end for deattached execution 

version: '2' 
services: 
    firefoxnode: 
    image: selenium/node-firefox-debug 
    volumes: 
     - /dev/shm:/dev/shm 
    depends_on: 
     - hub 
    environment: 
     HUB_HOST: hub 
    ports: 
     - "32772:5900" 

    chromenode: 
    image: selenium/node-chrome-debug 
    volumes: 
     - /dev/shm:/dev/shm 
    depends_on: 
     - hub 
    environment: 
     HUB_HOST: hub 
    ports: 
     - "32773:5900" 

    hub: 
    image: selenium/hub 
    ports: 
     - "4444:4444" 

lệnh tôi sử dụng:

docker-compose -f .\docker-compose.yml up -d 

Nguồn:

https://github.com/SeleniumHQ/docker-selenium

Các vấn đề liên quan