fix: create database in builder stage and copy to production

This commit is contained in:
2026-03-21 02:37:49 +08:00
parent c622f0b3c1
commit e68b25c593

View File

@@ -21,9 +21,16 @@ RUN npx prisma generate
# 复制源代码 # 复制源代码
COPY . . COPY . .
# 构建 # 设置生产环境变量(与运行阶段一致)
ENV DATABASE_URL="file:/app/data/student.db"
RUN mkdir -p /app/data && chmod 777 /app/data
# 构建 Nuxt
RUN npm run build RUN npm run build
# 在构建阶段创建数据库
RUN npx prisma db push
# 生产镜像 # 生产镜像
FROM node:20-alpine FROM node:20-alpine
@@ -35,6 +42,9 @@ RUN apk add --no-cache openssl
# 创建数据目录 # 创建数据目录
RUN mkdir -p /app/data && chmod 777 /app/data RUN mkdir -p /app/data && chmod 777 /app/data
# 设置数据库环境变量
ENV DATABASE_URL="file:/app/data/student.db"
# 复制 node_modules # 复制 node_modules
COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/node_modules ./node_modules
@@ -45,13 +55,12 @@ COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
# 复制 package.json # 复制 package.json
COPY --from=builder /app/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/.output ./
# 复制构建阶段创建的数据库文件
COPY --from=builder /app/data/student.db /app/data/student.db
# 暴露端口 # 暴露端口
EXPOSE 3000 EXPOSE 3000