kubernetes 构建Docker映像时将meta.json中的版本号提交到git repo

63lcw9qa  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(1)|浏览(114)

我有一个应用程序运行react作为前端和节点作为后端代码。在react公共文件夹中,我们有一个具有版本号的meta.json,每次我们运行npm运行构建,它都会更新该文件中的版本号。我们使用此方法来确保网站始终显示新发布的版本,在数据库中,我们也更新版本号,如果两者不匹配,网站会自动加载新版本。
我们正在转向Kubernetes,现在的问题是我们有一个用于React的Dockerfile,其中包含以下步骤

FROM node:12.18.3 AS build

ENV CI=false
ENV WDS_SOCKET_PORT=0

WORKDIR /app

COPY ["package.json", "package-lock.json", "./"]

RUN npm install --production

COPY . .

RUN npm run build:development

FROM nginx:alpine

COPY --from=build /app/build /usr/share/nginx/html

COPY --from=build /app/nginx-custom.conf /etc/nginx/conf.d/default.conf

我们正在Azure管道中使用此Dockerfile,并使用它构建映像,将该Docker映像推送到Azure容器注册表,然后使用kubectl restart拉取该映像并在AKS中重新启动部署。在从Dockerfile运行npm构建后,我的Meta.json文件将具有更新的版本,我希望提交并将更改的文件推送到Azure存储库,以便下一次如果流水线运行,它将具有更新版本号。
我已经做了我的POC对这个项目,但无法找到任何容易遵循的步骤,我遇到了这个回购https://github.com/ShadowApex/docker-git-push,但不清楚如何正确执行这一点,任何帮助将不胜感激。

ma8fv8wu

ma8fv8wu1#

不是将Git添加到Docker中,而是将额外的图层添加到Docker图像中。
映像构建完成后,您可以做的事情是将JSON复制到docker映像之外,并将其从CI机器推送到您想要管理的git或bucket。
命令,您可以使用

docker create --name container_name

Docker create创建容器,但不运行它。
Docker容器创建(或简称:docker create)命令从指定的映像创建一个新容器,而不启动它。
创建容器时,docker守护程序会在指定的映像上创建一个可写的容器层,并为运行指定的命令做好准备。然后,容器ID会被打印到STDOUT。这与docker run -d类似,只是容器永远不会启动。
因此,一旦容器文件系统存在,运行命令将文件从Docker复制到
CI
machine**,就这么简单。

Docker复制命令

docker cp container_name:/app/build/meta.json .

现在你在CI机器上有了一个文件,你可以把它上传到Git now或Bucket anywhere。

相关问题