Развертывание 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