Docker Compose中postgres-test测试数据库无法连接问题求助
解决Docker Compose中postgres-test数据库的pgAdmin连接问题
一、修复.env文件格式错误
你的.env文件存在环境变量未正确换行分隔的问题,这会导致服务无法正确读取测试数据库的配置参数,是连接失败的核心原因之一。
原错误内容:
PORT=3000 database DB_HOST=postgres DB_USERNAME=postgresDB_PASSWORD=admin123 DB_NAME=cityevents # test-env DB_TEST_NAME=postgres DB_TEST_HOST=postgres-test
修复后(每个变量单独占一行,避免值拼接错误):
PORT=3000 # 开发环境变量 DB_HOST=postgres DB_USERNAME=postgres DB_PASSWORD=admin123 DB_NAME=cityevents # 测试环境变量 DB_TEST_NAME=postgres DB_TEST_HOST=postgres-test
二、验证postgres-test容器状态
- 先检查容器是否正常启动:
docker-compose ps postgres-test
- 如果容器状态不是
Up,查看启动日志排查问题:
docker-compose logs postgres-test
- 修复配置后,重启测试数据库容器:
docker-compose down && docker-compose up -d postgres-test
三、检查pgAdmin连接参数
使用pgAdmin连接时,务必匹配以下参数:
- 主机名/地址:本地机器IP或
localhost(本地运行场景) - 端口:
5431(对应docker-compose中映射的宿主机端口) - 用户名:
postgres - 密码:
admin123 - 数据库名:
postgres(对应容器的POSTGRES_DB环境变量)
四、验证容器间连通性
若api-test服务需要连接postgres-test,修复.env后可进入容器测试网络连通性:
docker exec -it test-api bash
在容器内安装工具并测试:
apt update && apt install -y iputils-ping postgresql-client # 测试网络可达性 ping postgres-test # 测试数据库连接 psql -h postgres-test -U postgres -d postgres
输入密码admin123后,若能进入数据库交互界面,说明容器间连通正常。
五、排查api-test服务初始化问题
如果api-test的migrate命令执行失败,可能导致数据库初始化异常,查看日志定位问题:
docker-compose logs test-api
内容的提问来源于stack exchange,提问作者Mohit kavad
相关产品推荐
相关产品推荐

