docker 下一个js生产依赖项

xggvc2p6  于 2022-11-28  发布在  Docker
关注(0)|答案(1)|浏览(103)

我正在尝试在. Docker文件中使用nextjs应用程序构建docker容器,如下所示:

FROM node:16.16.0
RUN npm install --location=global pm2
WORKDIR /var/www/project-front
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production
COPY ./ /var/www/project-front
RUN /bin/bash -c 'yarn build'
EXPOSE 3000
USER node

# Launch app with PM2
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]

我的typescript和@types依赖项是dev依赖项,因此它们不会安装在该构建中,从而导致构建失败。
我试过在next.config.js中使用ignoreBuildErrors prop,但是这使得很多CI检查都没有用。所以问题是,我真的必须安装我的typescript依赖项,而不是作为dev deps,或者可能有其他方法?
我试图实现所有的ci检查都是检查类型的有效性,但在生产中它是无用的,所以我不想安装不必要的包。

8cdiaqws

8cdiaqws1#

使用multi-stage Docker build。例如:

FROM node:16.16.0 as build
RUN yarn install --frozen-lockfile && yarn build

FROM node:16.16.0
RUN npm install --location=global pm2
WORKDIR /var/www/project-front
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production
COPY --from=build ./ /var/www/project-front
EXPOSE 3000
USER node

# Launch app with PM2
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]

一个缺点是你必须安装一些依赖项两次。一个替代方案是复制在Docker构建之外构建的文件。

相关问题