2

我有一个 Dockerfile 可以拉取FROM hivemq/hivemq-ce. 这适用于“标准”平台,但不适用于 Raspberry Pi。因此,我按照官方 HiveMQ 存储库中的教程,直接在 RasPi 上为 arm64 构建了映像,并将其推送到frederikheld/hivemq-ce. FROM如果我将行更改为 .Dockerfile 在 RasPi 上运行良好FROM frederikheld/hivemq-ce

所以现在我的图像可以在不同来源的不同平台上工作。但是我怎样才能让我的 Dockerfile 在所有平台上工作呢?有没有办法从不同的来源为不同的架构提取?

4

2 回答 2

2

如此处所述, docker 支持多种 cpu 架构,并将为正确的平台选择正确的图像。因此,您可以构建一个非 arm64 映像frederikheld/hivemq-ce并将其推送到同一位置,而不会影响 arm64 映像。

您应该能够运行docker manifest inspect frederikheld/hivemq-ce以查看给定图像的可用架构。

于 2020-12-07T00:57:30.320 回答
1

我采用了这种方法:

start.sh

...
if [ "$(uname -m)" = "aarch64" ]; then
    docker-compose -f docker-compose.aarch64.yml up -d --build --force-recreate
else
    docker-compose up -d --build --force-recreate
fi
...

对于具有不同需求的每种架构,这需要一个标准docker-compose.yml和附加标准。docker-compose.<architecture>.yml

这不是很好,但它适用于我的环境。

不过,我仍然愿意寻求更好的解决方案!

于 2020-12-13T12:13:38.630 回答