我用的是Prisma,Postgres,Ducker,Kubernet。
npx Prisma Migrate dev正在工作。
和npx Prisma生成产生低于输出:
✔ Generated Prisma Client (2.23.0) to ./node_modules/@prisma/client in 68ms
You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
但是,当我尝试在我的路径文件中使用时,生成错误:
New-route.ts
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
我的码头文件:
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install --only=prod
COPY . .
CMD ["npm", "start"]
4条答案
按热度按时间gpnt7bae1#
在开发时,我通常不使用docker,但每次我在
schema.prisma
中更改某些内容并不得不使用npx prisma generate
时,我都会遇到这个问题。我的解决方案是重新启动运行npm start
的节点应用程序。也许如果你重新启动你的容器,它可能会起作用。如果您在kubernet Pod内,则使用终端访问Pod,然后发出生成命令
vom3gejh2#
我知道这已经被标记为已解决,但我只是想将我的设置分享给感兴趣的人。
文档文件
Package.json
我在库伯内斯负责这项工作。为了使数据库和迁移顺利进行,我运行了一个运行
prisma migrate deploy
的initContainer。(这是我刚刚复制的一项实时服务,并去掉了任何不必要的东西)
我希望这能对某些人有用
kr98yfug3#
您忘记了复制
prisma
目录,因为生成Prisma客户端需要schema.prisma
文件。您应该复制整个Prisma目录,以防您还需要迁移。您的最终Docker文件应包含以下内容:
iq3niunx4#
这里有另一个解决这个问题的方法。
由于Prisma客户端需要
.prisma
文件夹,如下图或文档所示,另一种方法是确保它与您的代码一起提供。您可以按如下方式执行此操作。错误方式:投递生成的文件夹
您可能会认为,只需在您的
.dockerignore
中添加.prisma文件夹的例外规则,即可将生成的文件包含在映像中(请注意惊叹号)但Prisma使用的查询引擎对于每个操作系统都不同,所以你可能会遇到麻烦。
正确方式:使用镜像生成文件
只需在BUILD命令之前将
RUN npx prisma generate
添加到您的Docker文件中。这样,就可以在创建映像期间生成文件,而不必在每个容器上运行prisma generate
命令。这种方法的缺点是您的停靠点图像会更大。如果这是一个问题,您可以尝试使用其他答案。