在 docker 中构建之前更新节点包

问题描述 投票:0回答:1

我的 CICD 有一个 docker 文件。

# For Development Environment
FROM node:16.13.2-alpine as build-stage
RUN sed -i 's/https/http/' /etc/apk/repositories

# Work Directory
WORKDIR /app
# Node Modules
COPY .npmrc package.json yarn.lock ./
RUN apk update && apk add git
ENV PYTHONUNBUFFERED=1
RUN apk add --update --no-cache python3 alpine-sdk && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools
ENV GIT_TERMINAL_PROMPT=1
# Install node modules
RUN yarn install --cache-folder .yarn
RUN yarn add "@X@debug"
# Copy app source to work directory
COPY . .
RUN export NODE_OPTIONS='--max-old-space-size=8192'
RUN yarn test:unit
RUN yarn run build-development

# production stage
FROM nginx as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY --from=build-stage /app/dist/v2/index.html /usr/share/nginx/html/
COPY server-config/development.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

我需要在构建之前将我们的内部 sdk 更新到最新版本,所以我添加了这一行:

RUN yarn add "@back/room-sdk@debug"

这有效,我的 sdk 已更新,并且构建版本确实包含最新的 sdk 版本。

我在我的

vite.config
文件中使用此代码来获取sdk版本并稍后将其记录到控制台(在浏览器中)
process.env.npm_package_dependencies__back_room_sdk

但是这个值没有更新,它给了我旧版本号。 如果我手动更新 sdk,提交并推送,然后运行 CICD,我可以使用此代码获得正确的版本号。

ENV:vue3 + vite

我尝试将 package.json 文件复制到我能想到的任何地方......没有成功 我也尝试过这个在部署之前在 docker 中构建时更新存储库版本

node.js docker vite package.json cicd
1个回答
0
投票

为了确保您的

Vite
项目反映CI/CD期间更新的SDK版本:

  1. 在 Dockerfile 中的yarn add 之后添加以下行以清除 纱线缓存:
RUN yarn cache clean
  1. 在添加yarn之前显式复制package.json和yarn.lock文件 命令:
COPY package.json yarn.lock ./
  1. 添加SDK后,打印package.json内容进行验证 正确版本:
RUN cat package.json
  1. 考虑在更新依赖项后触发 Vite 重建:
RUN yarn build
© www.soinside.com 2019 - 2024. All rights reserved.