Docker, NestJs не получается соединить с postgres
У меня не получается из сервиса backend получить доступ к postgres. Проверял pgadmin, он успешно работает с postgres, с этим проблем нет (то есть postgres успешно запущен). Но вот NestJs не может связаться с postgress. Я пробовал локально запустить NestJs, а postgress и pgadmin в докере, в таком варианте NestJs имеет доступ к postgres. Но внутри контейнера не получается связаться.
Я даже указал depends_on: -postgres , ничего не работает.
С чем может быть связана ошибка?
Пример ошибки стандартный, что нет связи с postgres:
backend | [Nest] 31 - 03/06/2024, 3:23:52 PM
ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
docker-compose.yml
version: "3.9"
services:
postgres:
container_name: chat
image: postgres:16.2
env_file:
- ./api-chat/.env
volumes:
- ./api-chat/postgres_data:/var/lib/postgresql/data/
ports:
- "5432:5432"
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4:8.3
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: root
ports:
- "5050:80"
backend:
container_name: backend
build:
context: ./api-chat
dockerfile: Dockerfile
depends_on:
- postgres
restart: always
env_file:
- ./api-chat/.env
command: npm run start:dev
volumes:
- ./api-chat:/docker-backend
ports:
- "3000:3000"
Dockerfile
# Use the official Node.js image
FROM node:18.14.0
# Set the working directory
WORKDIR /usr/src/docker-backend
# Копирование package.json to the container
COPY ./package.json .
# Если package-lock.json существует, копировать его в контейнер
COPY ./package-lock.json* .
# Установка зависимостей
RUN npm install
# Установка global nest cli
RUN npm install -g @nestjs/cli
# Копирование остальных файлов приложения в контейнер
COPY . .
Ответы (1 шт):
Проблема была в том, что в .env файле адрес для postgres я указывал localhost, а нужно было указывать имя контейнера с postgres