【问题标题】:Docker Alpine: unable to select packages: python (no such package) while building image for ARMDocker Alpine:无法选择包:python(没有这样的包)同时为 ARM 构建映像
【发布时间】:2021-11-08 13:36:41
【问题描述】:

我有使用 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"]

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

> [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

我尝试了这样的特定 python 版本:... add python3 make ...。它通过了这一步,但我在构建 sqlite3 二进制文件时遇到了这个错误:

#20 392.8 make: Entering directory '/app/node_modules/sqlite3/build'
#20 392.8   CC(target) Release/obj.target/nothing/../node-addon-api/nothing.o
#20 393.6   AR(target) Release/obj.target/../node-addon-api/nothing.a
#20 393.8   COPY Release/nothing.a
#20 394.0   ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3340000/sqlite3.c
#20 394.1 /bin/sh: python: not found
#20 394.1 make: *** [deps/action_before_build.target.mk:13: Release/obj/gen/sqlite-autoconf-3340000/sqlite3.c] Error 127
#20 394.1 make: Leaving directory '/app/node_modules/sqlite3/build'

【问题讨论】:

  • 面临同样的问题

标签: linux docker sqlite dockerfile alpine


【解决方案1】:
RUN apk add --no-cache --virtual .gyp python3 make g++

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 仍然抛出同样的错误:#17 365.1 /bin/sh: python: not found
  • 从安装中完全删除python,仅使用python3
  • 我做到了。这是我正在尝试使用的更新后的 Dockerfile:https://pastebin.com/JKK7MPtf。 sqlite3 二进制文件构建器期待python,但它不存在。
【解决方案2】:

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

【讨论】:

  • 它有点工作。我正在为 amd64、armv7 和 arm64 构建一个图像。该图像是使用 python2 构建的,没有任何错误。但是当我尝试在 armv7 上运行它时出现错误:# Fatal error in , line 0 # unreachable code。它适用于 amd64 和 arm64。
猜你喜欢
  • 2015-11-02
  • 1970-01-01
  • 2021-05-26
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多