踩坑!Dockerfile node 版本导致 build 失败

231 阅读1分钟

一个平平无奇的新的 React+Vite 项目,init完了想要推到 gitlab 仓库,结果 ci 没过关,dockerfile原本这么写的

FROM node:16.14.0 AS builder

RUN yarn config set registry https://registry.npmmirror.com
ENV FRONTEND=/opt/frontend

WORKDIR $FRONTEND

COPY package.json $FRONTEND
COPY yarn.lock $FRONTEND
RUN yarn
COPY . $FRONTEND
RUN yarn build

FROM nginx:1.18.0

ENV HOME=/opt/app

WORKDIR $HOME

COPY --from=builder /opt/frontend/dist dist
COPY nginx/ nginx/

RUN rm -r /etc/nginx/conf.d \
    && ln -s $HOME/nginx /etc/nginx/conf.d

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80

然后 gitlab ci 报错了,根据报错提示 node 版本太低了

image.png

于是我把 node 版本改成了 18.18.0,再次推上去,出现了新的报错,根据提示我一脸懵圈,看起来是设置 npm 镜像源的时候挂了。然后我在网上查了一圈不知道到底为什么。

image.png

A loooooooooooooooooooooooooooooooong time passed......... 直到改成下面这样就行了,换了一个 node 版本就行

FROM node:18.18-bullseye-slim AS builder

RUN yarn config set registry https://registry.npmmirror.com
ENV FRONTEND=/opt/frontend

WORKDIR $FRONTEND

COPY package.json $FRONTEND
COPY yarn.lock $FRONTEND
RUN yarn
COPY . $FRONTEND
RUN yarn build

FROM nginx:1.18.0

ENV HOME=/opt/app

WORKDIR $HOME

COPY --from=builder /opt/frontend/dist dist
COPY nginx/ nginx/

RUN rm -r /etc/nginx/conf.d \
    && ln -s $HOME/nginx /etc/nginx/conf.d

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80

img_v3_0293_a962052f-e1bc-433b-9b68-3c5740abf97g.jpg