iT邦幫忙

0

幫多階段 Dockerfile 除錯紀錄

  • 分享至 

  • xImage
  •  

目標:多階段的 Dockerfile 的其中一個步驟發生錯誤時,可以用這個方法除錯比較方便

情境


FROM node:16.18.1 as builder

WORKDIR /usr/app

COPY ./package*.json ./
RUN npm install

COPY ./ ./

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 .

npm run build 的那一個步驟出錯了

除錯方法


可以先修改 Dockerfile,把出錯的那一個步驟以及以下的步驟都先註解掉,這樣個以保證可以把做到一半的 image 做出來:

FROM node:16.18.1 as builder

WORKDIR /usr/app

COPY ./package*.json ./
RUN npm install

COPY ./ ./

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 builder

WORKDIR /usr/app

COPY ./package*.json ./
RUN npm install

COPY ./ ./

COPY src src

# 需要加以下這一行
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6  -y
RUN npm run build --output-path=./dist/ --prod

FROM nginx

COPY --from=builder /usr/app/dist/ /var/www/html

WORKDIR /var/www/html

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言