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

如何将本地Symfony项目连接到远程Docker PostgreSQL服务

如何从本地连接远程Docker部署的PostgreSQL数据库

环境详情

远程服务器上已部署Docker化开发环境,运行的容器列表如下:

iig_docker_postgres_adminer             entrypoint.sh docker-php-e ...   Up      0.0.0.0:8081->8080/tcp
iig_docker_postgres_nginx               /docker-entrypoint.sh ngin ...   Up      443/tcp, 0.0.0.0:8080->80/tcp
iig_docker_postgres_php                 docker-php-entrypoint php-fpm    Up      9000/tcp
iig_docker_postgres_postgres_database   docker-entrypoint.sh postgres    Up      0.0.0.0:5432->5432/tcp

开发栈可通过以下地址访问:http://syy0ana001.hpmetier.sf.intra.laposte.fr:8080

PostgreSQL的Dockerfile内容:

FROM postgres:12

docker-compose.yml中database服务的配置(其中POSTGRES_PORT=5432):

database:
  container_name: ${COMPOSE_PROJECT_NAME}_postgres_database
  build:
    context: ./postgres
  hostname: database
  restart: unless-stopped
  environment:
    POSTGRES_USER: user
    POSTGRES_PASSWORD: admin
    POSTGRES_DB: dbtest
  ports:
    - "${POSTGRES_PORT}:5432"
  volumes:
    - ./postgres/local_pgdata:/var/lib/postgresql/data
  networks:
    - symfony

已尝试的无效配置

  1. 使用远程服务器URL配置DATABASE_URL(错误:URL格式冗余,包含http://前缀,且账号与容器配置不符):
DATABASE_URL="postgresql://root:124524..@http://syy0ana001.hpmetier.sf.intra.laposte.fr:5432/dbtest?serverVersion=12&charset=utf8
  1. 使用容器内网IP配置(错误:容器内网IP仅在远程服务器的Docker网络内可访问,本地机器无法直接连通):
DATABASE_URL="postgresql://user:admin@192.168.96.5:5432/dbtest?serverVersion=12&charset=utf8"
volumes:
  symfony_dockerized_app_sync:
  db_app:

networks:
  symfony:
    driver: bridge
    external: true

正确解决方案

1. 修正DATABASE_URL格式

PostgreSQL连接URL不需要http://前缀,直接使用远程服务器的域名/IP,同时匹配容器配置的账号密码:

DATABASE_URL="postgresql://user:admin@syy0ana001.hpmetier.sf.intra.laposte.fr:5432/dbtest?serverVersion=12&charset=utf8"

2. 确保远程服务器端口开放

  • 检查远程服务器防火墙(如ufw、iptables),确认5432端口已开放,允许本地机器IP访问。
  • 若为内网环境,确保本地机器与远程服务器在同一内网,能正常解析syy0ana001.hpmetier.sf.intra.laposte.fr域名,或直接替换为远程服务器的内网IP。

3. 先验证基础连通性

在本地用psql命令测试连接,确认网络和账号无问题:

psql -h syy0ana001.hpmetier.sf.intra.laposte.fr -p 5432 -U user -d dbtest

输入密码admin后若能进入PostgreSQL命令行,说明连接正常,再将该配置同步到Symfony项目即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:45:40