You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Trino与PostgreSQL通过JDBC连接器配置问题

解决Docker容器中Trino与PostgreSQL的连接问题

1. 让两个容器处于同一Docker网络

默认Docker的bridge网络不支持容器名直接解析,必须把Trino和PostgreSQL放到同一个自定义网络里,才能用容器名my-postgres-db通信:

  • 创建自定义网络:
docker network create trino-postgres-net
  • 重启PostgreSQL容器并加入该网络:
docker stop my-postgres-db
docker rm my-postgres-db
docker run -d --name my-postgres-db --network trino-postgres-net -p 5432:5432 -v /home/postgresdb/db:/var/lib/postgresql/data my-postgres-image
  • 重启Trino容器并加入同一网络:
docker stop trino
docker rm trino
docker run --name trino -d --network trino-postgres-net -p 8080:8080 -v $PWD/catalog:/etc/trino/catalog/ trinodb/trino

2. 修正postgresql.properties配置

  • 必须把<db-name>替换成PostgreSQL里真实存在的数据库名(比如默认的postgres,或者你自己创建的库),不能留占位符。
  • 正确的配置示例:
connector.name=postgresql
connection-url=jdbc:postgresql://my-postgres-db:5432/postgres
connection-user=user_1
connection-password=password_1

补充:如果你的PostgreSQL容器里还没创建user_1用户和对应数据库,先进入容器执行SQL创建:

docker exec -it my-postgres-db psql -U postgres
# 执行以下SQL
CREATE USER user_1 WITH PASSWORD 'password_1';
CREATE DATABASE postgres OWNER user_1;
GRANT ALL PRIVILEGES ON DATABASE postgres TO user_1;

3. 验证配置与容器状态

  • 检查Trino容器是否正确挂载了配置文件:
docker exec trino ls /etc/trino/catalog/

要确保能看到postgresql.properties文件。

  • 查看Trino日志排查错误:
docker logs trino

如果出现连接超时、认证失败等信息,根据日志调整配置。

  • 确认PostgreSQL容器正常运行:
docker ps | grep my-postgres-db

状态必须是Up,并且本地能正常连接:

psql -h localhost -p 5432 -U user_1 -d postgres

4. 验证Trino连接

重启Trino容器后,用Trino CLI查看目录:

docker run -it --network trino-postgres-net trinodb/trino --server trino:8080
# 在CLI里执行命令
SHOW CATALOGS;

此时应该能看到postgresql目录。

内容的提问来源于stack exchange,提问作者Cipher187

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:31:30