From e68b25c5933542ecf5987904ee5dc96cd3b95a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AF=92=E5=AF=92?= <2596194220@qq.com> Date: Sat, 21 Mar 2026 02:37:49 +0800 Subject: [PATCH] fix: create database in builder stage and copy to production --- Dockerfile | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index df35523..f0ce30e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,9 +21,16 @@ RUN npx prisma generate # 复制源代码 COPY . . -# 构建 +# 设置生产环境变量(与运行阶段一致) +ENV DATABASE_URL="file:/app/data/student.db" +RUN mkdir -p /app/data && chmod 777 /app/data + +# 构建 Nuxt RUN npm run build +# 在构建阶段创建数据库 +RUN npx prisma db push + # 生产镜像 FROM node:20-alpine @@ -35,6 +42,9 @@ RUN apk add --no-cache openssl # 创建数据目录 RUN mkdir -p /app/data && chmod 777 /app/data +# 设置数据库环境变量 +ENV DATABASE_URL="file:/app/data/student.db" + # 复制 node_modules COPY --from=builder /app/node_modules ./node_modules @@ -45,15 +55,14 @@ COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma # 复制 package.json COPY --from=builder /app/package.json ./ -# 设置数据库环境变量并初始化数据库 -ENV DATABASE_URL="file:/app/data/student.db" -RUN npx prisma db push - # 复制构建产物 COPY --from=builder /app/.output ./ +# 复制构建阶段创建的数据库文件 +COPY --from=builder /app/data/student.db /app/data/student.db + # 暴露端口 EXPOSE 3000 # 启动应用 -CMD ["node", "server/index.mjs"] \ No newline at end of file +CMD ["node", "server/index.mjs"]