gpt4 book ai didi

node.js - 为以下应用程序结构编写 docker 的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:00 25 4
gpt4 key购买 nike

我有 3 个 NodeJS 微服务在 NodeJS 上运行。其中一个在单独的子域中运行,另外两个基于路径进行路由。我的 Docker 文件如下

FROM node:latest     

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install

COPY . /usr/src/app
EXPOSE 9000
CMD [ "npm", "start" ]

每个图像的端口都不同。之后,我在裸机服务器上运行了一个 nginx,并具有反向代理的所有配置。我知道这不是最好的解决办法。我怎样才能在同一个端口上运行和监听 3 个独立的实例?

对于数据库链接,我正在使用 --link 标志,但在文档中显示该标志已被折旧,解决该问题的正确方法是什么?

最佳答案

使用Traefik代替NGiNX :它将根据通过 consul 发现的容器来调整其反向代理规则。
请参阅“Traefik Swarm cluster ”以设置集群。

然后,您可以使用 service constrains 声明您的数据库,以便所述数据库始终在同一 Node 上运行。 。

例如参见“Running a MongoDB Replica Set on Docker 1.12 Swarm Mode: Step by Step”:

The basic plan is to define each member of the replica set as a separate service, and use constraints to prevent swarm orchestration moving them away from their data volumes

例如:

docker@manager1:~$ docker node update --label-add mongo.replica=1 $(docker node ls -q -f name=manager1)

docker service create --replicas 1 --network mongo \
--mount type=volume,source=mongodata1,target=/data/db \
--mount type=volume,source=mongoconfig1,target=/data/configdb \
--constraint 'node.labels.mongo.replica == 1' \
--name mongo1 mongo:3.2 mongod --replSet example

关于node.js - 为以下应用程序结构编写 docker 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45262421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com