我无法访问通过docker-compose文件创建的数据库。
鉴于以下撰写文件,我应该能够使用类似以下内容的方法从Java连接到该文件:
jdbc:postgresql://eprase:eprase@database:7000/eprase
但是,连接被拒绝。我什至不能使用PGAdmin来使用相同的详细信息连接它来创建新服务器。
我已经进入数据库容器并运行psql命令来验证是否已根据PostgreSQL的PostgreSQL文档创建了eprase用户和数据库,一切似乎都很好。我无法确定问题是否出在数据库容器内,或者我是否需要在撰写网络中进行更改。
客户端和服务器服务在很大程度上可以忽略,服务器是基于Java的Web API,客户端是Angular应用。
撰写文件:
version: "3"
services:
client:
image: eprase/client:latest
build: ./client/eprase-app
networks:
api:
ports:
- "5000:80"
tty: true
depends_on:
- server
server:
image: eprase/server:latest
build: ./server
networks:
api:
ports:
- "6000:8080"
depends_on:
- database
database:
image: postgres:9
volumes:
- "./database/data:/var/lib/postgresql/data"
environment:
- "POSTGRES_USER=eprase"
- "POSTGRES_PASSWORD=eprase"
- "POSTGRES_DB=eprase"
networks:
api:
ports:
- "7000:5432"
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4:latest
environment:
- "PGADMIN_DEFAULT_EMAIL=admin@eprase.com"
- "PGADMIN_DEFAULT_PASSWORD=eprase"
networks:
api:
ports:
- "8000:80"
depends_on:
- database
networks:
api:
答案 0 :(得分:4)
PostgreSQL数据库正在容器端口5432
上侦听。 7000:5432
行将主机端口7000
映射到容器端口5432
。这样一来,您就可以通过端口7000连接到数据库。但是,公用网络(api
)上的服务应该通过容器端口相互通信。
因此,从用于客户端和服务器服务的容器的角度来看,连接字符串应为:
jdbc:postgresql://eprase:eprase@database:5432/eprase