我正在使用 Prisma 开发一个 Nestjs 项目,并且我想在 Prisma 中使用多个 .env 文件。我按照这里的指南进行操作。根据指南,我添加:
"migratetest:mysql": "dotenv -e .env.test -- npx prisma migrate dev",
"migratedev:mysql": "dotenv -e .env.development -- npx prisma migrate dev"
Run Code Online (Sandbox Code Playgroud)
到我的 package.json。我运行migratetest:mysql加载 .env.test 文件并进行迁移。然后,我运行start: dev启动该应用程序。然而,棱镜说:
Error: error: Environment variable not found: DATABASE_URL.
--> schema.prisma:10
|
9 | provider = "mysql"
10 | url = env("DATABASE_URL")
|
Run Code Online (Sandbox Code Playgroud)
似乎在我的项目中找不到 .env 文件(根据指南,没有 .env 文件,应该更改为 .env.test 和 .env.development)
这是我的 .env.test:
DATABASE_URL=mysql://root:123456@localhost:3306/test
Run Code Online (Sandbox Code Playgroud)
这是我的.env.development:
DATABASE_URL=mysql://root:123456@localhost:3306/dev
Run Code Online (Sandbox Code Playgroud)
请帮忙 :)
这是我的 Dockerfile:
FROM node AS builder
WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/
COPY tsconfig.build.json ./
COPY tsconfig.json ./
RUN npm install
COPY . .
RUN npm run build
FROM node
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD [ "npm", "run", "start:dev" ]
Run Code Online (Sandbox Code Playgroud)
这是我的 docker-compose.yml:
version: "3.7"
services:
web:
image: Dockerfile
build:
context: ./
dockerfile: Dockerfile.development
volumes:
- ./:/app:z
environment:
NODE_ENV : development
TZ: "${TZ:-America/Los_Angeles}"
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
运行 docker-compose up …
这是我用来构建 Nestjs 项目的 Dockerfile:
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/
COPY protos ./protos/
COPY tsconfig.build.json ./
COPY tsconfig.json ./
RUN npm install
RUN npm run build
COPY . .
FROM node:14-alpine
COPY --from=builder /app/node_modules ./node_modules/
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist/
COPY --from=builder /app/protos ./protos/
COPY --from=builder /app/tsconfig.build.json ./
COPY --from=builder /app/tsconfig.json ./
COPY --from=builder /app/prisma ./prisma/
EXPOSE 5273
CMD ["npm", "run", "start:prod"]
Run Code Online (Sandbox Code Playgroud)
.dockerignore:
.vscode/
node_modules/
npm-debug.log
dist/
graphql/
test/
Run Code Online (Sandbox Code Playgroud)
容器无法工作,我得到:
Cannot …Run Code Online (Sandbox Code Playgroud)