一个构建环境,一个运行环境,在构建环境中完成包含prisma
的编译,然后将编译后的 node_modules
及相关环境COPY
到运行环境中,并把 prisma 自动生成的数据库更新脚本拷贝到容器中,以便实现数据库结构自动更新!
不知道时候可以优化掉
node_modules
的拷贝,没尝试过,抽空可以试试。
详情如下:
shFROM node:20-alpine3.21 AS BUILDER
WORKDIR /app
COPY package*.json ./
# 安装依赖并生成 Prisma Client
RUN npm install
COPY . .
RUN npx prisma generate
RUN npm run build
FROM node:20-alpine3.21 AS RUNNER
LABEL author.name="月上老狗"
LABEL author.email="[email protected]"
LABEL project.name="wechatbot"
LABEL project.version="0.0.3"
WORKDIR /app
COPY ./prisma/ ./prisma/
COPY --from=builder /app/.output/ ./
COPY --from=builder /app/.output/server/node_modules/ ./node_modules/
COPY --from=builder /app/.output/server/node_modules/.prisma/ ./.prisma/
# COPY ./data/ /app/data
COPY ./entrypoint.sh ./entrypoint.sh
RUN chmod +x entrypoint.sh
ENV NUXT_APP_VERSION="0.0.3"
ENV DATABASE_URL="/app/data/wechatbot.db"
ENV NUXT_ADMIN_USERNAME=""
ENV NUXT_ADMIN_PASSWORD=""
ENV NUXT_WXPUBLIC_SECRET=""
ENV NUXT_WXPUBLIC_TOKEN=""
ENV NUXT_WXPUBLIC_AESKEY=""
VOLUME /app/data/
ENV PORT="3001"
EXPOSE 3001
ENTRYPOINT ["/app/entrypoint.sh"]
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!