我需要在 Vue 应用程序的 Dockerfile 中包含 python2,以便构建依赖项 node-sass@4.14.1 (在 package.json 中定义)。以下工作正常:
FROM node:16.15.0-alpine as builder
RUN apk add --no-cache python2 make g++
...
ADD app/package.json .
RUN CXXFLAGS="--std=c++14" npm install
Run Code Online (Sandbox Code Playgroud)
但这个节点镜像使用的是 alpine 3.15,它在 zlib 中有一个我想删除的严重漏洞,所以我想使用更新的 alpine 版本。但是使用例如node:16.15.1-alpine(使用alpine-3.16)然后apk添加失败,因为python2不再包含在该图像中。
我尝试设置 PYTHON 环境变量并使用 python3 代替,但是 node-gyp@3.8.0 (由 node-sass@4.14.1 使用)的构建失败并出现 SyntaxError: Missing Parentheses in call to 'print',所以对于这个版本,似乎需要 python2 来构建。
在 package.json 中,我的 devDependency 是:
"devDependencies": {
...
"node-sass": "^4.14.1",
"sass-loader": "^7.0.1"
Run Code Online (Sandbox Code Playgroud)
(是的,我意识到node-sass版本很旧(就像python2一样),并且node-sass已被弃用,但尝试使用此包的较新版本会导致其他问题,所以我首先想尝试只需使构建适用于现有版本,但使用较新的 alpine。)
使用node:16.15.1-alpine作为基础镜像时如何添加python2?