lil*_*get 5 postgresql environment-variables docker
我正在尝试在 Symfony 和 Docker 中连接我的 PostgreSql 数据库并收到错误:
docker-compose.yml
services:
db:
image: postgres:${POSTGRES_VERSION:-12}-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-my_db}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-root}
POSTGRES_USER: ${POSTGRES_USER:-root}
volumes:
- $PWD/postgres-data:/var/lib/postgresql/data:rw
profiles:
- db-in-docker
ports:
- "5432:5432"
networks:
- symfony
Run Code Online (Sandbox Code Playgroud)
和.env.dev.local
DATABASE_URL="postgresql://root:root@host.docker.internal:5432/my_db?serverVersion=12&charset=utf8"
Run Code Online (Sandbox Code Playgroud)
SQLSTATE[08006] [7] 无法连接到服务器:连接被拒绝
Run Code Online (Sandbox Code Playgroud)Is the server running on host "host.docker.internal" (192.168.65.2) and accepting TCP/IP connections on port 5432?
我埃文编辑了我的 /etc/hosts 文件以将此主机连接到127.0.0.1
由于这是在我的 Docker 主机上运行的 Postgres 数据库,因此我使用的是 host.docker.internal,它映射到 Mac 或 Windows 上的主机 IP,使用 127.0.0.1 或 localhost 将导致代码尝试连接到同一个容器运行代码,该代码没有运行数据库。
怎么解决这个问题呢?
小智 1
如果Symfony也在docker中运行,你可以尝试直接在docker-compose.yml中定义ENV并传递postgres“服务”名称/别名(docker将解析此名称)
像这样的东西(在symfony服务定义中)
environment:
- DATABASE_URL="postgresql://root:root@db/my_db?serverVersion=12&charset=utf8"
Run Code Online (Sandbox Code Playgroud)
其中“db”是 postgres 的服务名称
我有类似的问题,对我来说这个别名有帮助。
| 归档时间: |
|
| 查看次数: |
4057 次 |
| 最近记录: |