首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将运行在容器内的Prisma连接到另一个容器中的PostgreSQL数据库,使用docker-组合

如何将运行在容器内的Prisma连接到另一个容器中的PostgreSQL数据库,使用docker-组合
EN

Stack Overflow用户
提问于 2022-10-02 13:45:48
回答 1查看 160关注 0票数 0

描述

我构建了一个简单的RestAPI,使用node.jsPrisma作为ORM,并为该应用程序创建了一个Dockerfile,然后使用docker-compose创建了以下服务:-

  • web ->这是应用程序服务,它使用Dockerfile提到的above.
  • pgdb ->构建,这是一个使用postgresql官方码头映像构建的PostgreSQL容器。

问题

当我尝试运行docker-compose up时,无法构建 web服务,因为Prisma无法运行它的迁移,因为它无法连接到运行在另一个服务中的数据库,即

特定错误消息

错误: P1001:无法到达pgdb:5432的数据库服务器。

请确保您的数据库服务器在pgdb:5432上运行。

注意:我在这里使用pgdb ( PostgreSQL服务的名称)来引用主机。

预期行为

它应该能够使用pgdb作为主机引用,并成功地连接到位于pgdb:5432的数据库服务器。

代码

  • docker-compose中引用以创建web服务的Dockerfile

从节点:16 WORKDIR /app复制package*.json。运行npm安装副本。。#运行Prisma迁移。运行npx将dev -name init #编译类型记录代码迁移到javascript。运行npx #运行编译的代码(已编译的文件输出到dist文件夹)。CMD“节点”,"dist/index.js“

  • docker-compose.yml

版本:"3.9“服务: webapp: build:。端口:- "5000:5000“depends_on:- pgdb pgdb:映像: postgres:14环境:- POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres -POSTGRES_PASSWORD=postgres

  • .env (包含Prisma连接字符串)

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

版本

v16.17.0

  • Prisma ^4.4.0

  • Node
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-02 14:01:30

运行Prisma迁移。运行npx prisma迁移dev -name init

在docker映像构建时运行迁移是没有意义的。迁移应该在映像的入口点运行,而不是在构建映像时运行。

然后,在部署容器时,在部署的每个环境中,在应用程序启动之前运行迁移。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73926309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档