无法使用 Prisma 连接到 Docker 中运行的 Postgresql 容器

问题描述 投票:0回答:3

我正在尝试在 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
postgresql docker
3个回答
0
投票

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

0
投票

问题出在我身上!我通常会运行VPN,所以我没有考虑它。一旦我禁用它,一切都会按预期进行。

但是我确实必须使用

localhost
而不是
postgresql
作为我的
DB_HOST
。 (我最初尝试过这个,但没有运气,就在那时我遇到了一些答案,说你需要使用容器名称而不是本地主机)。


0
投票

尝试将 DB_HOST 设置为 0.0.0.0

© www.soinside.com 2019 - 2024. All rights reserved.