我无法从后端服务访问 postgres。我检查了pgadmin,它与postgres一起成功运行,没有任何问题(即postgres已成功启动)。但是NestJs无法与postgress通信。我尝试在本地运行 NestJs,并在 Docker 中运行 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 . .
问题是在 .env 文件中我将 postgres 的地址指定为 localhost,但我必须使用 postgres 指定容器的名称