Docker 交叉编译构建上下文导致 `dockerfile.v0: 不支持的前端功能 moby.buildkit.frontend.contexts`

问题描述 投票:0回答:1

我正在尝试为我的树莓派交叉编译一个 Rust 应用程序(那里的编译非常慢)。 为此,我尝试在其他地方使用构建上下文执行 Dockerfile(因为 Docker 映像中需要一些证书和其他内容)。

Dockerfile (./myapp/Dockerfile)

FROM rust

RUN apt-get update && apt-get install -y pkg-config libssl-dev build-essential cmake
WORKDIR /home/myapp
COPY --from=local ./myapp/. .
COPY --from=local ./mqtt-helper/ /home/mqtt-helper/

COPY --from=local ./mqtt-broker/config/certs/ca.crt ./certs/
COPY --from=local ./mqtt-broker/config/certs/mqtt-subscriber.key ./certs/
COPY --from=local ./mqtt-broker/config/certs/mqtt-subscriber.crt ./certs/

ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN cargo install --path .
EXPOSE 8080
CMD ["myapp"]

现在我正在尝试跑步:

docker buildx build --platform linux/arm64 --build-context local=./ ./myapp/

但是这个调用总是会导致:

[+] Building 0.0s (2/2) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                     0.0s
 => => transferring dockerfile: 32B                                                                                                                                                                                                                      0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                        0.0s
 => => transferring context: 2B                                                                                                                                                                                                                          0.0s
ERROR: failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: unsupported frontend capability moby.buildkit.frontend.contexts

谢谢你

docker arm
1个回答
0
投票

根据这篇博文,您需要使用 Dockerfile 版本 1.4 或更高版本作为 Dockerfile 前端才能使用多个构建上下文。您当前设置捆绑的前端似乎尚不支持此功能。尝试将以下 parser 指令 放在

Dockerfile
的顶部:

# syntax=docker/dockerfile:1.4

这应该会自动下载

docker/dockerfile:1.4
图像并将其用作自定义 Dockerfile 前端,而不是与系统捆绑的前端。有关更多详细信息,请参阅自定义 Dockerfile 语法

© www.soinside.com 2019 - 2024. All rights reserved.