我有一个应用程序运行作为前端和节点作为后端代码。在run公用文件夹中,我们有一个具有版本号的meta.json,每次我们运行npm运行构建时,它都会更新该文件中的版本号。我们使用这种方法,以确保网站总是显示新的版本,在数据库中,我们也更新版本号,如果两者不匹配,网站自动加载新版本。
我们正处于转移到Kubernetes的过程中,现在的问题是我们有一个用于反应的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,并使用它构建一个映像,并将该对接器映像推送到Azure容器注册中心,并使用kubectl重新启动来提取该映像,并在AKS中重新启动部署。在从Dockerfile运行npm运行构建之后,我的meta.json文件将有更新的版本,我希望提交并将修改后的文件推送到azure,这样下次如果管道运行,它将有更新的版本号。
我已经做了我的POC在这个项目上,但无法找到任何容易遵循的步骤,我遇到了这个回购https://github.com/ShadowApex/docker-git-push,但不清楚如何正确地执行这个项目,任何帮助将不胜感激。
发布于 2022-09-22 13:33:20
它不会将Git添加到 docker 中,而是会向图像添加额外的层。
一旦映像构建完成了,之后,您可以做的是将JSON复制到码头映像之外,并将其从CI机器推送到要管理的git或桶中。
命令,您可以使用
docker create --name container_name
Docker create
将在不运行新容器的情况下创建。
docker容器create (或速记: docker create)命令从指定的映像创建一个新容器,而不启动它。
在创建容器时,停靠守护进程在指定的映像上创建一个可写容器层,并为运行指定的命令做好准备。然后将容器ID打印到STDOUT。这类似于docker运行-d,除非容器从未启动。
因此,容器文件系统一旦运行命令,就可以将文件从docker复制到CI machine,就像这样简单。
码头副本命令
docker cp container_name:/app/build/meta.json .
现在你有一个文件在CI机器上,你可以上传到Git现在或桶任何地方。
https://stackoverflow.com/questions/73815221
复制相似问题