部署 docker-compose as yml 以便能够使用同一端口进行扩展

Deploying docker-compose as yml in order to be able to scale using the same port

我已经使用 docker-机器成功部署了 docker-compose.yml。我遇到的问题是缩放。尝试扩展使用端口 3000 的 node.js 应用程序。如何扩展 docker-compose 服务。我知道我可以在 1 个节点(服务器)的集群中使用 docker-compose scale web=3 但这不起作用,因为我指定了端口 3000,这会导致冲突。

如何在不使用 HAProxy 或 Nginx 的情况下使其以动态方式工作?

Docker 文件

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", "."]

docker-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

因为您实际上绑定到主机,所以没有代理或负载平衡器是不可能的。

通过 GitHub 查看此主题的问题,其中一位用户提出了类似的问题:

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

下面是一个示例,说明如何使用负载均衡器轻松完成此操作:

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