Не удается подключиться к PostgreSQL через prisma js в docker-compose

Когда запускаю в docker-compose отдельно сервис postgres и подключаюсь к нему через prisma через localhost на самом устройстве, то все идет нормально. Но когда я запускаю prisma в docker-compose, и пытаюсь в нем подключиться заменяя в адресе "localhost" на "db", то выдает ошибку.

Прошу подсказать, в чем может быть проблема?

Вывод в консоли

> docker-compose up -d

[+] Building 7.4s (11/11) FINISHED                                                                                                                  
 => [internal] load build definition from Dockerfile                                                                                           0.0s
 => => transferring dockerfile: 315B                                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                              0.0s
 => => transferring context: 34B                                                                                                               0.0s
 => [internal] load metadata for docker.io/library/node:18.3.0                                                                                 1.8s
 => [auth] library/node:pull token for registry-1.docker.io                                                                                    0.0s
 => [internal] load build context                                                                                                              0.0s
 => => transferring context: 2.71kB                                                                                                            0.0s
 => [1/6] FROM docker.io/library/node:18.3.0@sha256:6b91515d351353e47b48a2644be4f0581f921b53da0c494be176d6573fe8818e                           0.0s
 => CACHED [2/6] ADD . /opt/app                                                                                                                0.0s
 => CACHED [3/6] WORKDIR /opt/app                                                                                                              0.0s
 => CACHED [4/6] RUN echo "DATABASE_URL=postgresql://root:1234@db:5432/bot?schema=public" > .env                                        0.0s
 => CACHED [5/6] RUN npm install --production                                                                                                  0.0s
 => ERROR [6/6] RUN npx prisma@^3.15.2 migrate deploy                                                                                          5.5s
------
 > [6/6] RUN npx prisma@^3.15.2 migrate deploy:
#0 2.679 npm WARN exec The following package was not found and will be installed: prisma@^3.15.2
#0 5.368 Environment variables loaded from .env
#0 5.369 Prisma schema loaded from prisma/schema.prisma
#0 5.383 Datasource "db": PostgreSQL database "bot", schema "public" at "db:5432"
#0 5.413 
#0 5.413 Error: P1001: Can't reach database server at `db`:`5432`
#0 5.413 
#0 5.413 Please make sure your database server is running at `db`:`5432`.
------
failed to solve: executor failed running [/bin/sh -c npx prisma@^3.15.2 migrate deploy]: exit code: 1

Process finished with exit code 17

docker-compose.yml

version: '3.8'
services:
  db:
    container_name: pg-tg-bot
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: bot
    ports:
      - "5432:5432"
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
  bot:
    container_name: tg-bot
    build:
        context: .
        dockerfile: Dockerfile
        args:
          DATABASE_URL: $DATABASE_URL
    restart: always

Dockerfile

FROM node:18.3.0

ADD . /opt/app
WORKDIR /opt/app

ARG DATABASE_URL

ENV DATABASE_URL $DATABASE_URL

RUN npm install --production
RUN npx prisma@^3.15.2 migrate deploy

CMD npm start

Пробовал и заменять адрес подключения с localhost на название контейнера с postgres, так же не работает.

Так же пробовал запускать еще рядом pgadmin в docker-compose, и подключаться через него к postgres, так все работает. Может проблема именно в prisma? Или нужно как-то настроить сети docker-compose?


Ответы (0 шт):