【发布时间】:2021-06-03 21:16:02
【问题描述】:
我正在尝试使用 docker 在我的 Node.js 后端设置多服务架构。我目前有两个服务和两个独立的数据库
version: "3"
services:
server-api-getaway:
build:
context: "."
dockerfile: "./server-api-gateway/Dockerfile"
depends_on:
- db
- redis
ports:
- "7100:7100"
volumes:
- ./server-api-gateway:/usr/src/app/server-api-gateway
environment:
- CHOKIDAR_USEPOLLING=true
- REDIS_URL=redis://cache
- DATABASE_URL=postgres://postgres:postgres@db:3336/dbname
- DATABASE_PORT=3336
- DATABASE_HOST=host.docker.internal
- POSTGRES_DB=dbname
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- PORT=7100
db:
image: postgres
restart: always
environment:
- POSTGRES_DB=dbname
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "3336:3306"
server-user-service:
build:
context: "."
dockerfile: "./server-user-service/Dockerfile"
depends_on:
- user-service-db
ports:
- "7000:7000"
volumes:
- ./server-user-service:/usr/src/app/server-user-service
environment:
- CHOKIDAR_USEPOLLING=true
- REDIS_URL=redis://cache
- DATABASE_URL=postgres://postgres:postgres@user-service-db:3307/dbname
- DATABASE_PORT=3307
- DATABASE_HOST=host.docker.internal
- POSTGRES_DB=dbname
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- PORT=7000
user-service-db:
image: postgres
restart: always
environment:
- POSTGRES_DB=dbname
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "3307:3306"
redis:
image: redis
container_name: cache
restart: always
ports:
- 6379:6379
volumes:
pgdata:
driver: local
pgconf:
driver: local
pglog:
driver: local
我希望两个数据库在不同的端口上运行,但是当我运行 docker-compose up 时,它们会暴露在 5432 端口
2021-03-05 07:12:10.111 UTC [1] 日志:侦听 IPv4 地址 “0.0.0.0”,端口 5432
当我将服务连接到端口 5432 时,一切正常。但是我需要将两个数据库暴露给不同的端口。我怎样才能实现它?
更新
我已经按照 cmets 中的建议更改了端口映射。
user-service-db:
image: postgres
restart: always
environment:
- POSTGRES_DB=dbname
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "5432:3336"
docker-compose down
之后又重新开始结果保持不变
用户服务-db_1 | 2021-03-05 10:01:23.023 UTC [1] 日志: 监听 IPv4 地址“0.0.0.0”,端口 5432
可能我缺少一个细节
【问题讨论】:
标签: node.js postgresql docker express microservices