无法访问 Docker 中的"postgres":'5432' 的数据库服务器



我在NX NEST+ANGULAR环境中工作,该环境具有用于NEST和Postgres的Docker容器。CRUD操作从localhost到数据库容器都可以正常工作,但如果我将请求从嵌套容器发送到数据库容器,就会出现错误。我的docker在根目录中组成文件配置:

version: '3.8'
services:
nest-api:
container_name: nest-api
build:
context: .
dockerfile: Dockerfile
ports:
- 3333:3333
postgres:
image: postgres:13.5
container_name: postgres
restart: always
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
volumes:
- postgres:/var/lib/postgresql/data
ports:
- '5432:5432'
volumes:
postgres:
networks:
nestjs-crud:

同时.env文件中的数据库URL:

DATABASE_URL="postgresql://admin:admin@postgres:5432/mydb?schema=public"

Dockerfile:

FROM node:14
WORKDIR /workspace
COPY . .
COPY /prisma ./prisma/
RUN npm install
EXPOSE 3333
EXPOSE 9229
CMD [  "npm", "run", "start:migrate:dev" ]

我已经这样配置了我的软件包.json:"start:migrate:dev": "prisma migrate deploy && nx serve"

我仍然不知道我错过了什么,也不知道我在哪里犯了错。感谢您的帮助。

您必须将两个容器保持在同一网络中才能进行通信。更新你的docker-compose.yml文件如下。

version: '3.8'
services:
nest-api:
container_name: nest-api
build:
context: .
dockerfile: Dockerfile
ports:
- 3333:3333
networks:
- nestjs-curd
postgres:
image: postgres:13.5
container_name: postgres
restart: always
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
volumes:
- postgres:/var/lib/postgresql/data
ports:
- '5432:5432'
networks:
- nestjs-crud
volumes:
postgres:
networks:
nestjs-crud:

相关内容

最新更新