【发布时间】:2022-08-08 07:25:24
【问题描述】:
尝试 dockerize、nestjs 和 Prisma。 Nest 正确响应 curl 请求,我可以使用此命令很好地连接到 Postgres 服务器
--- docker compose exec postgres psql -h localhost -U postgres -d webapp_dev
一切正常,直到我尝试运行
npx prisma migrate dev --name init
然后我回来
Error: P1001: Can\'t reach database server at `postgres`:`5432`
这是我的代码:
码头工人-compose.yml
version: \"2\"
services:
backend:
build: .
ports:
- 3000:3000
- 9229:9229 # debugger port
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
command: yarn start:debug
restart: unless-stopped
depends_on:
- postgres
environment:
DATABASE_URL: postgres://postgres@postgres/webapp_dev
PORT: 8000
postgres:
image: postgres:14-alpine
ports:
- 5432:5432
environment:
POSTGRES_DB: webapp_dev
POSTGRES_HOST_AUTH_METHOD: trust
Docker文件
FROM node:16
# Create app directory, this is in our container
WORKDIR /usr/src/app
# Install app dependencies
# Need to copy both package and lock to work
COPY package.json yarn.lock ./
RUN yarn install
COPY prisma/schema.prisma ./prisma/
RUN npx prisma generate
# Bundle app source
COPY . .
RUN yarn build
EXPOSE 8080
CMD [\"node\": \"dist/main\"]
.env
//.env
DATABASE_URL=postgres://postgres@postgres/webapp_dev
-
码头工人不太热,所以请随意抨击我。我只是被困在谷歌炼狱自动取款机
-
如果您在构建过程中运行
npx prisma migrate命令(我在您发布的文件中看不到它),那么 Postgres 那时不可用。 Postgres 仅在运行时可用。 -
在我已经启动 docker 容器之后,我正在终端中运行它
-
我想到了。在 .env 文件中将
DATABASE_URL=postgres://postgres@postgres/webapp_dev更改为DATABASE_URL=postgres://postgres@localhost/webapp_dev对我有用 -
我的整个团队仍然有这个问题。完全无法找到问题的根本原因。有时有效,有时无效。我建议如果你让它工作,不要重建你的 db 或 docker 图像。这个问题很烦人而且断断续续。
标签: postgresql docker nest prisma migrate