Docker Alpine构建ARM镜像报python包不存在及sqlite3编译失败如何解决
问题根因
- 第一个报错是因为你使用的Alpine 3.14及以上版本已经移除了名为
python的软件包(原对应Python 2.x,已停止官方维护),软件源中仅保留python3包,直接安装python会提示找不到包。 - 第二个报错是因为sqlite3的原生模块构建脚本默认调用
python命令执行构建逻辑,安装python3后系统中只有python3命令,没有python别名,导致构建时找不到可执行文件。
修复方案
修改Dockerfile中构建依赖安装的RUN指令,安装python3的同时创建软链接将python指向python3即可,修改后的对应代码段如下:
RUN apk update \ && apk --no-cache --virtual build-dependencies add python3 make g++ \ && ln -s /usr/bin/python3 /usr/bin/python \ && npm install --production
其余Dockerfile配置保持原有内容不变即可正常完成构建。
补充说明:创建的软链接仅存在于构建阶段,后续执行apk del build-dependencies时会将python3连带软链接一起删除,最终运行镜像不会残留构建依赖,不会额外增加镜像体积。
如果不想创建系统软链接,也可以通过npm配置指定Python路径,效果一致:
RUN apk update \ && apk --no-cache --virtual build-dependencies add python3 make g++ \ && npm config set python /usr/bin/python3 \ && npm install --production
内容的提问来源于stack exchange,提问作者Paul Ulibro
相关产品推荐
相关产品推荐

