如何访问Docker构建过程中生成的临时构建日志文件
访问Docker构建失败时容器内日志文件的方法
下面是几个实用方案,帮你拿到CI构建失败时容器里的/tmp/xfs-xxx/build.log日志:
方案1:从构建失败的临时容器中复制日志
Docker构建的每一步都会生成临时容器,即使步骤失败,这个容器也不会被自动删除。操作步骤:
- 构建失败后,在CI服务器执行
docker ps -a,找到状态为Exited的最新容器(对应失败的RUN yarn install步骤) - 通过容器ID把日志复制到主机:
docker cp <容器ID>:/tmp/xfs-xxx/build.log ./ci-build-fail.log - 直接查看主机上的
ci-build-fail.log即可
如果容器还能启动,也可以直接进入容器查看:docker exec -it <容器ID> /bin/bash
进入后执行 cat /tmp/xfs-xxx/build.log 查看内容
方案2:修改Dockerfile,失败时自动打印日志
在Dockerfile的RUN命令里增加判断逻辑,一旦yarn install失败,就先把日志输出到控制台,这样CI的构建日志里就能直接看到错误详情。修改后的RUN行如下:
RUN yarn install --immutable || (cat /tmp/xfs-xxx/build.log && exit 1) && yarn cache clean
这样如果install失败,会先打印日志内容,再以非0状态码退出,CI日志里就能直接拿到报错信息,无需额外去容器中查找。
方案3:手动启动临时镜像模拟构建步骤
拆分Dockerfile的构建阶段,先构建到执行yarn install之前的镜像,再手动进入容器执行命令查看日志:
- 给Dockerfile的初始阶段添加命名,示例:
FROM node:latest AS install-stage USER node WORKDIR /work COPY --chown=node .yarn/releases/* /work/.yarn/releases/ COPY --chown=node package.json yarn.lock .yarnrc.yml /work # 暂不执行RUN install,留到手动操作
- 在CI服务器构建这个临时阶段的镜像:
docker build --target install-stage -t temp-install-image . - 启动容器进入交互模式:
docker run -it --rm temp-install-image /bin/bash - 在容器内手动执行
yarn install --immutable,执行失败后直接查看/tmp/xfs-xxx/build.log的内容
内容的提问来源于stack exchange,提问作者asinkxcoswt
相关产品推荐
相关产品推荐

