Github操作docker与buildx错误合成(列表索引超出范围)



我正试图使用buildx在github操作文件中构建一个compose文件,但我遇到了下一个错误:

[104392] Failed to execute script docker-compose
Traceback (most recent call last):
File "docker-compose", line 3, in <module>
File "compose/cli/main.py", line 81, in main
File "compose/cli/main.py", line 203, in perform_command
File "compose/metrics/decorator.py", line 18, in wrapper
File "compose/cli/main.py", line 380, in build
File "compose/project.py", line 519, in build
File "compose/project.py", line 501, in build_service
File "compose/service.py", line 1133, in build
File "compose/service.py", line 1950, in build
IndexError: list index out of range
Error: Process completed with exit code 255.

在错误出现之前,所有Dockerfile步骤都在构建堆栈步骤中正确完成,之后应该开始图像导出。

当我尝试在github runner中运行相同的命令时,我没有任何错误,我部署在_work目录下的一个节点中。

当我从github-actions-yaml文件中删除setup-buildx步骤时,错误不会出现。

这里是integration.yaml(github-actions(:

name: Continuous Integration
on:
pull_request:
branches: '*'

jobs:
integration:
name: Setup Docker
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Buildx
uses: docker/setup-buildx-action@v1
with:
install: true
driver-opts: >-
image=moby/buildkit:master
- name: Cache main image layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-  
- name: Prepare environment
run: |
cp .npmrc.example .npmrc
cp .env.example .env

- name: Build stack
run: |
DOCKER_BUILDKIT=1 ./devops ci build --no-cache --build-arg USER_UID=$(id -u) --build-arg USER_GID=$(id -g) app

devops脚本基本上是在执行下一个命令:

docker-compose -f docker-compose.yml -f .docker/overrides/docker-compose.ci.yml build --build-arg USER_UID=$(id -u) --build-arg USER_GID=$(id -g) app

这可能与我在docker compose文件中定义的一些标签有关吗?

如果有任何答案,我将不胜感激,因为我没有发现任何其他与此相关的问题。

谢谢:(

我们今天面临同样的问题,找到了两种解决方案。

首先,正确的解决方案(至少对于我们的情况(:使用docker compose(带空格(命令而不是docker-compose(带连字符(命令。关于两者之间的区别,这里再多讲一点。

在我们的案例中,我们运行了apt upgrade,docker compose在我们没有意识到的情况下得到了更新。我们现在已经安装了docker-composedocker compose,但仍在运行旧的docker-compose命令。

如果这不起作用:@leehambley在这里和这里更详细地描述了这个问题。在第一个链接中,他提到设置COMPOSE_DOCKER_CLI_BUILD=0可以修复这个问题,尽管这会禁用docker构建工具包,这可能会产生一些后果,所以要更加小心。

您可以通过运行COMPOSE_DOCKER_CLI_BUILD=0 docker-compose build ...来完成此操作。

最新更新