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