如何解决在 AWS 上初始化 Prisma 2 + Postgres docker 时出错
我一直在尝试使用 Prisma 2、Postgres 和我在 AWS EC2 上的后端服务创建一个容器。即使在将 .reverse
命令添加到我的 Prisma Dockerfile 之后,我仍然在 Postgres 数据库服务中看到一个错误:
npx prisma migrate --dev init --name --preview-feature
我附上了我的 Prisma 2 ERROR: relation "_prisma_migrations" does not exist at character 126
STATEMENT: SELECT "id","checksum","finished_at","migration_name","logs","rolled_back_at","started_at","applied_steps_count" FROM "_prisma_migrations" ORDER BY "started_at" ASC
和我的 Dockerfile
文件,希望您能帮我解决这个问题。我什至尝试使用 docker-compose.yml
命令,但没有奏效(有一些关于 public.[table_name_1] 不存在的错误)。我的后端和棱镜图像托管在 Amazon ECR 上。此外,由于我在 postgres 服务中指定了 POSTGRES_USER,我应该创建一个具有 CREATEDB 权限的用户,所以我认为我不应该在本次讨论中强调影子数据库问题:https://github.com/prisma/prisma/issues/4571
Prisma 服务 Dockerfile:
npx prism migrate deploy
docker-compose.yml:
FROM node:12.18-alpine
ENV NODE_ENV=production
WORKDIR /usr/src/app
RUN npm install -g --unsafe-perm prisma
COPY ./ ./prisma
EXPOSE 5555
RUN npx prisma generate
CMD ["sh","-c","npx prisma migrate dev --name init --preview-feature && npx prisma studio"]
我可以确认 version: '3.4'
services:
db:
container_name: db
ports:
- 5432:5432
image: postgres:latest
environment:
- POSTGRES_USER=[user]
- POSTGRES_PASSWORD=[password]
- POSTGRES_DB=[db_name]
volumes:
- my-vol:/var/lib/postgresql/data/
backend:
depends_on:
- db
container_name: backend
ports:
- 4000:4000
image: [backend image name]
prisma:
depends_on:
- db
container_name: prisma
ports:
- 5555:5555
image: [prisma image name]
environment:
NODE_ENV: production
volumes:
my-vol:
正在运行,因为我在 Prisma 服务日志中看到了正在应用的迁移。如果我的 Dockerfile 中未包含此命令,则在打开 Prisma Studio 或查询我的后端服务时会看到不同的错误。这是我的目录布局:
- ./[Backend_Service_Dockerfile]
- ./prisma/migrations
- ./prisma/[Prisma_Service Dockerfile]
- ./docker-compose.yml
我可能需要链接我的卷以包含 Prisma 文件夹吗?还是我在这里遗漏了什么?我已经坚持了几天,所以任何帮助都会很棒!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。