帮多阶段 Dockerfile 除错纪录

目标:多阶段的 Dockerfile 的其中一个步骤发生错误时,可以用这个方法除错比较方便

情境


FROM node:16.18.1 as builderWORKDIR /usr/appCOPY ./package*.json ./RUN npm installCOPY ./ ./COPY src srcRUN npm run build --output-path=./dist/ --prodFROM nginxCOPY --from=builder /usr/app/dist/ /var/www/htmlWORKDIR /var/www/html

使用以下指令製作 image 时

docker build -t mylaptop/frontend .

npm run build 的那一个步骤出错了

除错方法


可以先修改 Dockerfile,把出错的那一个步骤以及以下的步骤都先注解掉,这样个以保证可以把做到一半的 image 做出来:

FROM node:16.18.1 as builderWORKDIR /usr/appCOPY ./package*.json ./RUN npm installCOPY ./ ./COPY src src# RUN npm run build --output-path=./dist/ --prod# FROM nginx# COPY --from=builder /usr/app/dist/ /var/www/html# WORKDIR /var/www/html

製作作到一半的 image

docker build -t mylaptop/frontend .

之后可以用这个指令进入到 shell

docker run -it mylaptop/frontend bash

进入到 shell 之后就可以比较方便的尝试各种方法来重现错误,以及尝试各种方式除错

最终的找到的错误


最后找到了是这个部份有错
https://stackoverflow.com/questions/55313610/importerror-libgl-so-1-cannot-open-shared-object-file-no-such-file-or-directo

最终修改后的 Dockerfile

FROM node:16.18.1 as builderWORKDIR /usr/appCOPY ./package*.json ./RUN npm installCOPY ./ ./COPY src src# 需要加以下这一行RUN apt-get update && apt-get install ffmpeg libsm6 libxext6  -yRUN npm run build --output-path=./dist/ --prodFROM nginxCOPY --from=builder /usr/app/dist/ /var/www/htmlWORKDIR /var/www/html

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章