我有一个 docker 构建,在构建过程中需要运行服务器进行一些管理配置。通过运行服务器,它声明一个端口,并且在多平台构建期间,这与
docker buildx
命令冲突,因为它声明该端口已在使用中。
现在我想按顺序运行构建而不是并行运行,但这似乎不是一个选项?
我尝试通过将 cpu 设置为 1 (
--cpuset-cpus 1
) 来实现此功能,但这似乎没有什么区别。
docker buildx build --platform=linux/amd64,linux/arm64/v8 --cpuset-cpus 1 --push -t ivonet/payara .
那么是否可以在禁用并行的情况下运行此构建?
我现在对此做了一些研究,除了目前似乎无法禁用并行性之外,我还没有找到令人满意的答案。
我确实找到了一种适合我的解决方法,并且很好地解决了这个问题。 我现在使用实际的远程服务器来构建我需要的目标平台。
本质上,定义一个远程(通过 ssh)服务器,并在其上安装 docker,然后将其配置为构建特定目标。 这样,它实际上可以并行运行,因为物理上不同的机器可以处理形式上重叠的端口号(正如我的用例中的问题)。
阅读完整的博客文章这里
尝试
COMPOSE_PARALLEL_LIMIT=1
。
https://docs.docker.com/compose/environment-variables/envvars/#compose_parallel_limit
当您创建构建器时,您可以传递以下信息:
buildkitd.toml
[worker.oci]
max-parallelism = 1
当您在本地计算机上时:
docker buildx create --use \
--name mybuilder \
--driver docker-container \
--config <<dir>>/buildkitd.toml
当你在 github 上操作时:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64
config: <<dir>>/buildkitd.toml