我正在尝试在 Docker 中运行 Postgresql,并通过 Prisma 连接到它。我已经查看了多个问题,但我看不出我正在尝试做的事情有什么问题。
我似乎也无法 ping 我的 postgresql 实例,或连接到管理员。
人们最常见的问题是使用
localhost
而不是 docker 镜像名称。
我也尝试过禁用firewalld,但这没有什么区别,所以我也不认为是我的防火墙阻止了端口。
谢谢!
.env
DB_NAME=spot
DB_HOST=postgres
DB_USERNAME=spotuser
DB_PASSWORD=spotpass
DB_PORT=5432
DATABASE_URL=`postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?schema=public`
docker-compose.yml
version: '3.1'
services:
postgres:
image: postgres
restart: always
volumes:
- ./db-data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
ports:
- 5432:5432
adminer:
image: adminer
restart: always
ports:
- 8080:8080
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e66b70a9ac69 adminer "entrypoint.sh docke…" 6 minutes ago Up 2 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp spot-spot-adminer-1
dd629496a246 postgres "docker-entrypoint.s…" 6 minutes ago Up 2 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp spot-spot-postgres-1
https://docs.docker.com/compose/compose-file/#expose
尝试将曝光添加到您的
docker-compose.yml
version: '3.1'
services:
postgres:
image: postgres
restart: always
volumes:
- ./db-data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
ports:
- 5432:5432
expose:
- 5432
问题出在我身上!我通常会运行VPN,所以我没有考虑它。一旦我禁用它,一切都会按预期进行。
但是我确实必须使用
localhost
而不是 postgresql
作为我的 DB_HOST
。 (我最初尝试过这个,但没有运气,就在那时我遇到了一些答案,说你需要使用容器名称而不是本地主机)。
尝试将 DB_HOST 设置为 0.0.0.0