使用node:alpine基础镜像今天突然就构建不了了

原创 吴就业 76 0 2024-07-19

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/e54b05cddc3a47cab45d955b941b51a0

作者:吴就业
链接:https://wujiuye.com/article/e54b05cddc3a47cab45d955b941b51a0
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

我的一个nextjs项目使用node:alpine基础镜像,dockerfile如下:

FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm i
COPY . .
ENV NEXT_PUBLIC_ENVIRONMENT=production
RUN npm run build
EXPOSE 3000
RUN echo "npm start" > start_up.sh
RUN chmod +x start_up.sh
CMD ["sh", "start_up.sh"]

在此之前部署到线上都能正常构建和运行,今天修改点代码提交到生产环境,发现竟然镜像构建失败了。

提示如下:

截屏2024-07-19 10.56.34

#9 [4/8] RUN npm i
#9 4.434 npm error Exit handler never called!
#9 4.434 npm error This is an error with npm itself. Please report this error at:
#9 4.435 npm error   <https://github.com/npm/cli/issues>;
#9 4.435 npm error A complete log of this run can be found in: /root/.npm/_logs/2024-07-19T02_32_24_794Z-debug-0.log

起初我还以为是有什么依赖突然下载不了了,但是本地不使用dockerfile,直接npm run server是成功的。并且删除本地node_modules目录后,重新npm i之后构建运行也是成功的。

所以我怀疑是基础镜像的问题。查看官方镜像仓库是否有更新:

截屏2024-07-19 10.59.09

可以看到:“last pushed 8 hours ago by ….”,说明确实是基础镜像有更新,而node:alpine指的是latest版本。

我使用node –version和npm –version查看版本,确认自己版本是22.2.0,于是我找到相同node版本的镜像node:22.2.0-alpine

截屏2024-07-19 10.58.30

接着修改dockerfile:

FROM node:22.2.0-alpine
WORKDIR /app
COPY package*.json ./
RUN npm i
COPY . .
ENV NEXT_PUBLIC_ENVIRONMENT=production
RUN npm run build
EXPOSE 3000
RUN echo "npm start" > start_up.sh
RUN chmod +x start_up.sh
CMD ["sh", "start_up.sh"]

然后构建就成功了。

截屏2024-07-19 10.57.24

这个事情教育了我,选择镜像一定要指定版本,不要使用latest版本。因为镜像更新如果携带一些依赖软件的版本更新,就可能会导致我们代码无法构建或者无法正常运行。

#前端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

SwiftUI开发macOS APP,如何自定义标题栏(TitleBar)

macOS APP应用的标题栏(TitleBar)是指包含“交通信号灯”(红黄绿三个小按钮)的一栏,通常TitleBar只包括“交通信号灯”和一个title,使用SwiftUI开发macOS APP,怎么把TitleBar隐藏掉呢?

如何将macOS app发布到app store?

开发完一个macOS app之后,我们应该如何将其发布到app store呢?这个文档记录了笔者从零开始一步步学习将自己开发好的macOS app发布到app store的过程。

如何编译构建一个同时支持多cpu架构的静态链接库(.a文件)

我想要让自己的mac OS应用支持更多用户可以使用,就必须要打出一个能同在amd64架构cpu的mac os设备上运行,也需要能在arm64架构cpu的mac os设备上运行。

SwiftUI macOS开发,Button和TextField控件设置背景色不生效的问题

SwiftUI macOS开发,Button和TextField控件设置背景色不生效的问题。

SwiftUI Chart如何修改字体颜色

使用Charts绘制的图表,默认文字都是灰色的,当我们app的主题颜色是固定深色的情况下,图表的文字会看不清,怎么修改呢?

Mac APP开发,Swift调用C静态链接库的函数

开发Mac APP,Swift如何调用C函数,以及如何传递回调函数,是一个比较复杂的Swift调用C的场景。