fix: create database in builder stage and copy to production
This commit is contained in:
21
Dockerfile
21
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"]
|
||||
CMD ["node", "server/index.mjs"]
|
||||
|
||||
Reference in New Issue
Block a user