2016-10-23 2 views
2

Предположим, у меня есть приложение, которое прослушивает на 8888 - другие части приложения хотят продолжить доступ к нему на 8888 - но внешним пользователям необходимо получить к нему доступ в диапазоне портов выше 50000 - например, 50888.Будет ли сборщик докеров сопоставлять порт на два порта или мне нужен посол?

То, что я хотел бы сделать в моем docker-compose.yml является:

ports: 
    - "8888:8888" 
    - "50888:8888" 

Будет ли это работать?

Моя другая альтернатива, чтобы добавить ambassador там, как это:

blah: 
    image: blah:6 
    ports: 
    - "8888:8888" 
    container_name: blah 
    networks: 
    default: {} 
blah_ambassador: 
    image: svendowideit/ambassador 
    links: 
    - blah 
    ports: 
    - "50888:8888" 
    environment: 
    - BLAH_PORT_8888_TCP:tcp://blah:8888 
    container_name: ops_ambassador 
    networks: 
    default: {} 

Мой вопрос: ли докер-Compose позволяют отображение порта к двум портам или мне нужен посол?

ответ

3

Некоторое время назад docker-compose использовал словарь для хранения портов отображения, а ключ был внутренним портом, поэтому одно значение переопределяло другое.

Это было исправлено here, используя список. Таким образом, в настоящее время docker-compose позволяет сопоставить внутренний порт с двумя портами. Возможно, вы используете более старую версию для докеров.

Пример:

→ docker-compose -v 
docker-compose version 1.8.0, build f3628c7 

Докер-Compose содержимое файла (docker-compose.yml):

backend: 
    image: your_image 
    ports: 
    - 3000:3000 
    - 8888:3000 

Докер осматривают команду: docker inspect your_container_id

"Ports": { 
      "3000/tcp": [ 
       { 
        "HostIp": "0.0.0.0", 
        "HostPort": "8888" 
       }, 
       { 
        "HostIp": "0.0.0.0", 
        "HostPort": "3000" 
       } 
      ] 
     }, 
Смежные вопросы