Не удается подключиться к 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?