fix: create database in builder stage and copy to production
This commit is contained in:
19
Dockerfile
19
Dockerfile
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user