Docker Alpine:在为 ARM 构建映像时无法选择软件包:python(没有此类软件包)

Pau*_*bro 15 linux sqlite docker dockerfile alpine-linux

我有使用 SQLite 数据库的 Node.js 应用程序。要在 ARM 架构上使用它,我需要构建 sqlite3 二进制文件,因此在构建 Docker 映像时需要一些包。

这是我的 Dockerfile:

FROM node:14-alpine as builder

WORKDIR /app

COPY package*.json ./

RUN apk update \
    && apk --no-cache --virtual build-dependencies add python make g++ \
    && npm install --production

COPY . .    

RUN mkdir -p ./public ./data \
    && cd ./client \
    && npm install --production \
    && npm run build \
    && cd .. \
    && mv ./client/build/* ./public \
    && rm -rf ./client \
    && apk del build-dependencies

FROM node:14-alpine

COPY --from=builder /app /app

WORKDIR /app

EXPOSE 5005

ENV NODE_ENV=production

CMD ["node", "server.js"]
Run Code Online (Sandbox Code Playgroud)

我已经使用它 6 个月了,它工作得很好,但现在它抛出了这个错误:

FROM node:14-alpine as builder

WORKDIR /app

COPY package*.json ./

RUN apk update \
    && apk --no-cache --virtual build-dependencies add python make g++ \
    && npm install --production

COPY . .    

RUN mkdir -p ./public ./data \
    && cd ./client \
    && npm install --production \
    && npm run build \
    && cd .. \
    && mv ./client/build/* ./public \
    && rm -rf ./client \
    && apk del build-dependencies

FROM node:14-alpine

COPY --from=builder /app /app

WORKDIR /app

EXPOSE 5005

ENV NODE_ENV=production

CMD ["node", "server.js"]
Run Code Online (Sandbox Code Playgroud)

我尝试使用特定的 python 版本,如下所示... add python3 make ...:它通过了这一步,但我在构建 sqlite3 二进制文件时遇到此错误:

> [linux/amd64 builder 4/6] RUN apk update && apk --no-cache --virtual build-dependencies add python make g++ && npm install --production:
#10 0.166 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
#10 0.503 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
#10 1.141 v3.14.2-123-g010734651f [https://dl-cdn.alpinelinux.org/alpine/v3.14/main]
#10 1.141 v3.14.2-120-g90167408c8 [https://dl-cdn.alpinelinux.org/alpine/v3.14/community]
#10 1.141 OK: 14943 distinct packages available      
#10 1.216 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
#10 1.476 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
#10 1.936 ERROR: unable to select packages:
#10 1.989   python (no such package):
#10 1.989     required by: build-dependencies-20211108.132318[python]
------
Dockerfile.multiarch:7
--------------------
   6 |
   7 | >>> RUN apk update \
   8 | >>>     && apk --no-cache --virtual build-dependencies add python make g++ \
   9 | >>>     && npm install --production
  10 |
--------------------
error: failed to solve: process "/bin/sh -c apk update     && apk --no-cache --virtual build-dependencies 
add python make g++     && npm install --production" 
did not complete successfully: exit code: 2
Run Code Online (Sandbox Code Playgroud)

And*_*kov 18

RUN apk add --no-cache --virtual .gyp python3 make g++
Run Code Online (Sandbox Code Playgroud)

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (27认同)
  • 从安装中完全删除“python”,仅使用“python3” (2认同)

小智 6

我们遇到了同样的错误,在我们的例子中,明确的定位python3似乎可以修复它。我在 IRC 上询问,尚未找到为什么python不再工作,但被告知python2仍然提供/usr/bin/python. 那么也许你真的需要 python2 ?