docker / compose

Define and run multi-container applications with Docker
https://docs.docker.com/compose/
Apache License 2.0
33.62k stars 5.19k forks source link

IndexError: list index out of range #7280

Closed teohhanhui closed 4 years ago

teohhanhui commented 4 years ago

Description of the issue

IndexError: list index out of range when doing docker-compose up -d

Context information (for bug reports)

Output of docker-compose version

docker-compose version 1.25.4, build 8d51620
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019

Output of docker version

Client: Docker Engine - Community
 Version:           19.03.7
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        7141c199a2
 Built:             Wed Mar  4 01:19:42 2020
 OS/Arch:           linux/amd64
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          19.03.7
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       7141c199a2
  Built:            Wed Mar  4 01:19:50 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Output of docker-compose config (Make sure to add the relevant -f and other flags)

services:
  admin:
    build:
      cache_from:
      - quay.io/api-platform/admin
      context: /home/teohhanhui/projects/api-platform/api-platform/admin
      target: api_platform_admin_development
    depends_on:
    - dev-tls
    image: quay.io/api-platform/admin
    ports:
    - protocol: tcp
      published: 444
      target: 3000
    volumes:
    - /home/teohhanhui/projects/api-platform/api-platform/admin:/usr/src/admin:rw,cached
    - dev-certs:/usr/src/admin/node_modules/webpack-dev-server/ssl:ro,nocopy
  api:
    build:
      cache_from:
      - quay.io/api-platform/nginx
      - quay.io/api-platform/php
      context: /home/teohhanhui/projects/api-platform/api-platform/api
      target: api_platform_nginx
    depends_on:
    - php
    image: quay.io/api-platform/nginx
    volumes:
    - /home/teohhanhui/projects/api-platform/api-platform/api/public:/srv/api/public:ro
  client:
    build:
      cache_from:
      - quay.io/api-platform/client
      context: /home/teohhanhui/projects/api-platform/api-platform/client
      target: api_platform_client_development
    depends_on:
    - dev-tls
    environment:
      API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT: http://api
      API_PLATFORM_CLIENT_GENERATOR_OUTPUT: src
    image: quay.io/api-platform/client
    ports:
    - protocol: tcp
      published: 443
      target: 3000
    volumes:
    - /home/teohhanhui/projects/api-platform/api-platform/client:/usr/src/client:rw,cached
    - dev-certs:/usr/src/client/node_modules/webpack-dev-server/ssl:ro,nocopy
  db:
    environment:
      POSTGRES_DB: api
      POSTGRES_PASSWORD: '!ChangeMe!'
      POSTGRES_USER: api-platform
    image: postgres:12-alpine
    ports:
    - protocol: tcp
      published: 5432
      target: 5432
    volumes:
    - db-data:/var/lib/postgresql/data:rw
  dev-tls:
    build:
      context: /home/teohhanhui/projects/api-platform/api-platform/docker/dev-tls
    ports:
    - protocol: tcp
      published: 80
      target: 80
    volumes:
    - dev-certs:/certs:rw
  mercure:
    depends_on:
    - dev-tls
    environment:
      ALLOW_ANONYMOUS: '1'
      CERT_FILE: /certs/localhost.crt
      CORS_ALLOWED_ORIGINS: '*'
      DEMO: '1'
      JWT_KEY: '!ChangeMe!'
      KEY_FILE: /certs/localhost.key
      PUBLISH_ALLOWED_ORIGINS: https://localhost:1337
    image: dunglas/mercure
    ports:
    - protocol: tcp
      published: 1337
      target: 443
    volumes:
    - dev-certs:/certs:ro,nocopy
  php:
    build:
      cache_from:
      - quay.io/api-platform/nginx
      - quay.io/api-platform/php
      context: /home/teohhanhui/projects/api-platform/api-platform/api
      target: api_platform_php
    depends_on:
    - db
    - dev-tls
    healthcheck:
      interval: 10s
      retries: 3
      start_period: 30s
      timeout: 3s
    image: quay.io/api-platform/php
    volumes:
    - dev-certs:/certs:ro,nocopy
    - /home/teohhanhui/projects/api-platform/core:/src/api-platform/core:rw
    - /home/teohhanhui/projects/api-platform/api-platform/api:/srv/api:rw,cached
    - /home/teohhanhui/projects/api-platform/api-platform/api/docker/php/conf.d/api-platform.dev.ini:/usr/local/etc/php/conf.d/api-platform.ini:rw
  vulcain:
    depends_on:
    - api
    - dev-tls
    environment:
      CERT_FILE: /certs/localhost.crt
      KEY_FILE: /certs/localhost.key
      UPSTREAM: http://api
    image: dunglas/vulcain
    ports:
    - protocol: tcp
      published: 8443
      target: 443
    volumes:
    - dev-certs:/certs:ro,nocopy
version: '3.4'
volumes:
  db-data: {}
  dev-certs: {}

Steps to reproduce the issue

  1. Set the following environment variables:
    COMPOSE_DOCKER_CLI_BUILD=1
    DOCKER_BUILDKIT=1
    DOCKER_BUILDKIT_IMAGE=moby/buildkit@sha256:622c3ad5bf7533351a5a50388a2ecf8957ba225f34298cc0035ddf9fac4cce0d
    DOCKER_CERT_PATH=/certs/client
    DOCKER_CLI_EXPERIMENTAL=enabled
    DOCKER_HOST=tcp://docker:2376
    DOCKER_TLS_VERIFY=1

    (where docker hostname points to a container from docker:19.03-dind)

  2. docker context create default_tls
    docker buildx create --driver docker-container --driver-opt image=${DOCKER_BUILDKIT_IMAGE},network=host --use default_tls
    docker buildx install
  3. (Not sure if relevant)
    docker buildx bake \
        --pull \
        --set admin.args.BUILDKIT_INLINE_CACHE=1 \
        --set admin.output=type=docker \
        --set api.args.BUILDKIT_INLINE_CACHE=1 \
        --set api.output=type=docker \
        --set client.args.BUILDKIT_INLINE_CACHE=1 \
        --set client.output=type=docker \
        --set php.args.BUILDKIT_INLINE_CACHE=1 \
        --set php.output=type=docker
  4. docker-compose up -d

Observed result

IndexError: list index out of range

Expected result

No error

Stacktrace / full error message

[223] Failed to execute script docker-compose
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 72, in main
  File "compose/cli/main.py", line 128, in perform_command
  File "compose/cli/main.py", line 1077, in up
  File "compose/cli/main.py", line 1073, in up
  File "compose/project.py", line 548, in up
  File "compose/service.py", line 367, in ensure_image_exists
  File "compose/service.py", line 1110, in build
  File "compose/progress_stream.py", line 25, in stream_output
  File "compose/utils.py", line 61, in split_buffer
  File "compose/utils.py", line 37, in stream_as_text
  File "compose/service.py", line 1820, in build
IndexError: list index out of range

See https://github.com/teohhanhui/api-platform/runs/500975432?check_suite_focus=true#step:11:56

Additional information

OS version / distribution: Ubuntu 18.04 (GitHub Actions) docker-compose install method: binary copied from docker/compose:alpine-1.25.4

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 4 years ago

This issue has been automatically closed because it had not recent activity during the stale period.

Sunhat commented 2 years ago

stale but still relevant?