Развертывание docker-compose как yml для возможности масштабирования с использованием того же порта

Мне удалось развернуть docker-compose.yml с помощью docker-machine. У меня проблема с масштабированием. Попытка масштабирования приложения node.js, использующего порт 3000. Как я могу масштабировать сервис docker-compose. Я знаю, что могу использовать docker-compose scale web=3 в рое 1 узла (сервер), но это не работает, потому что я указал порт 3000, что приводит к конфликту.

Как я могу заставить его работать динамически, не прибегая к использованию HAProxy или Nginx?

Dockerfile

FROM node:wheezy
# replace this with your application's default port
EXPOSE 3000
ADD . /install
WORKDIR /install
ENV NODE_PATH /usr/local/lib/node_modules/
RUN npm install -g $(cat packages) && rm -rf npm_cache /tmp/* && npm install
# Install node modules and start
CMD ["npm", "install"]
CMD ["node", "."]

докер-compose.yml

version: "2"
    services:
      web:
        build: .
        ports:
          - "3000:3000"
        links:
          - mongo
        environment:
          - "affinity:image==node:wheezy"
      mongo:
        image: mongo
        volumes:
          - ./appdb:/data/db
    volumes:
      mongo-data:
        driver: local

1 ответ

Решение

Поскольку вы на самом деле привязываете к хосту, это было бы невозможно без прокси или балансировщика нагрузки.

Смотрите эту проблему в теме через GitHub, где пользователь задавал похожий вопрос:

https://github.com/docker/compose/issues/3088

Вот пример того, как вы можете сделать это с помощью балансировщика нагрузки:

https://github.com/vegasbrianc/docker-compose-demo/blob/master/docker-compose.yml

Другие вопросы по тегам