我是微服务的新手,我有一个项目来安装多个微服务器,这个项目就是这样设置的。每个嵌套js应用程序都有
现在我要做的是
巢JS微卫星应用程序1
- API exposed to port 5000
- Postgres database working on 5432
- NATS running on 4222套式JS应用微观器2
- API exposed to port 5001
- Postgres database working on 5433
- NATS not running on 4222 as it is already occupied. If I change the port how I am gonna use the same message broker on both services.问题是,我想在第二个微服务和所有新创建的微服务上使用相同的NATS消息代理。我的嵌套JS应用程序1的停靠-撰写文件如下所示。
version: '3.9'
services:
api:
container_name: nest_app_1
image: nest_app_1
build:
dockerfile: Dockerfile
context: .
ports:
- 127.0.0.1:5000:5000
env_file:
- .env
depends_on:
- db
- nats
networks:
- main
db:
container_name: postgres
image: postgres:latest
ports:
- 127.0.0.1:5432:5432
volumes:
- ./data:/var/lib/postgresql/data
env_file:
- .env
networks:
- main
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4
ports:
- 127.0.0.1:8080:80
env_file:
- .env
networks:
- main
nats:
image: nats-streaming:latest
entrypoint:
- /nats-streaming-server
- -cid
- main_cluster
ports:
- "127.0.0.1:4222:4222"
- "127.0.0.1:6222:6222"
- "127.0.0.1:8222:8222"
restart: always
tty: true
networks:
- main
networks:
main:
driver: bridge第二套JS微型服务码头组合如下
version: '3.9'
services:
api:
container_name: nest_app_2
image: nest_app_2
build:
dockerfile: Dockerfile
context: .
ports:
- 127.0.0.1:5001:5001
env_file:
- .env
depends_on:
- app_db_2
networks:
- main
app_db_2:
container_name: postgres_2
image: postgres:latest
ports:
- 127.0.0.1:5433:5432
volumes:
- ./data:/var/lib/postgresql/data
env_file:
- .env
networks:
- main
pgadmin:
container_name: pgadmin_2
image: dpage/pgadmin4
ports:
- 127.0.0.1:8081:80
env_file:
- .env
networks:
- main
nats:
image: nats-streaming:latest
entrypoint:
- /nats-streaming-server
- -cid
- main_cluster
ports:
- "127.0.0.1:4222:4222"
restart: always
tty: true
networks:
- main
networks:
main:
driver: bridge现在我想使用NATS在两个应用程序之间进行通信。因此,如果我发布来自microservice 1的消息,并订阅到microservice 2,以此类推。
发布于 2021-04-18 09:58:18
是的,如果通过主机网络堆栈链接主机端口,则确定主机端口已被占用。您只能有一个链接到ip:port的服务
看起来,您试图启动两个NATS实例,并让它们加入同一个NATS集群。但也许您需要两个实例来进行开发。你只想看到消息通过它。
选项1:只需将所有内容组合在一起,并对两个服务使用depends_on和同一个NATS节点即可。
选项2:使用单独的组合堆栈来提供NATS基础设施并使用链接。
选项3:为NATS集群定义自定义网络,其中每个NATS容器都获得自己的iP。
但我会从1开始。
https://stackoverflow.com/questions/67146444
复制相似问题