【发布时间】:2023-04-04 09:05:02
【问题描述】:
我在 java spring 上有一个连接到 postgres 的 web 应用程序。 Сonnection 字符串到数据库:
spring.datasource.url=jdbc:postgresql://postgres:5432/postgres有一个 compose-file 可以提升 Web 应用程序和数据库:
version: "3"
services:
postgres:
networks:
- backend
image: postgres
ports:
- "5432:5432"
volumes:
- db-data:/var/lib/postgresql/data
worker1:
networks:
- backend
image: scripter51/worker
ports:
- "8082:8082"
deploy:
mode: replicated
replicas: 2
placement:
constraints: [node.role == worker]
networks:
backend:
volumes:
db-data:
- 命令
docker stack deploy --compose-file comp.yml test机器上的公共服务
问题:如果数据库和 Web 应用程序在同一台机器上 - 一切正常,如果不同 - 那么应用程序无法通过服务名称找到数据库。
【问题讨论】:
-
您是否尝试指定网络驱动程序?并在外部创建网络?你检查了 swarm 中的容器 IP 吗?
-
网络驱动程序是一个覆盖。网络不是外部的。检查 IP 地址是什么意思?
-
当我尝试指定一个外部网络时,我收到一条消息说它应该提前创建。
-
如果你指定一个外部网络,你必须通过 docker network create -d overlay backend 创建它你也可以做一个 docker network inspect(确保范围是 swarm)
标签: spring postgresql docker networking swarm