Проблема запуска docker-compose 2024: Ошибка: «ContainerConfig»

У меня возникла очень странная проблема, с которой, я надеюсь, кто-то сталкивался раньше.

У меня есть файл docker-compose, в котором находится служба Redis. Ничего особенного, я просто беру последнюю версию Redis из Docker Hub. Сегодня я приступил к повторному развертыванию и обычно запускаю --force-recreate, чтобы отключить/поднять контейнеры, но когда я пытаюсь запустить --force-recreate сегодня, я получаю странные ошибки, которых я раньше не видел (и вчера это работало нормально).

Как ни странно, выполнение обычных команд вниз/вверх работает и проблем нет. Я что-то пропустил?

Вот команды, которые позволяют выключить/включить мою систему без ошибок:

docker-compose -f docker-compose.prod.yml down 
docker-compose -f docker-compose.prod.yml up -d

Вот команда, которая должна подойти, но она завершается с ошибкой «ContainerConfig» для docker-compose redis:

docker-compose -f docker-compose.prod.yml up -d --force-recreate

Выход...

docker-compose -f docker-compose.prod.yml up -d --force-recreate
Recreating app_redis_1 ...

ERROR: for app_redis_1  'ContainerConfig'

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 1186, in up
  File "compose/cli/main.py", line 1182, in up
  File "compose/project.py", line 702, in up
  File "compose/parallel.py", line 108, in parallel_execute
  File "compose/parallel.py", line 206, in producer
  File "compose/project.py", line 688, in do
  File "compose/service.py", line 581, in execute_convergence_plan
  File "compose/service.py", line 503, in _execute_convergence_recreate
  File "compose/parallel.py", line 108, in parallel_execute
  File "compose/parallel.py", line 206, in producer
  File "compose/service.py", line 496, in recreate
  File "compose/service.py", line 615, in recreate_container
  File "compose/service.py", line 334, in create_container
  File "compose/service.py", line 922, in _get_container_create_options
  File "compose/service.py", line 962, in _build_container_volume_options
  File "compose/service.py", line 1549, in merge_volume_bindings
  File "compose/service.py", line 1579, in get_container_data_volumes
KeyError: 'ContainerConfig'
[88001] Failed to execute script docker-compose

Вот простая конфигурация docker-compose для сервиса redis:

version: '3.8'

services:

  redis:
    image: redis:latest
    restart: always
    ports:
      - "6379"

Сейчас 20204 год. Используйте docker compose вместо docker-compose.

Chris Becke 25.04.2024 07:28

Ну, я чувствую себя глупо из-за этого, поэтому склонен удалить этот вопрос... но можете ли вы ответить на один вопрос? Почему docker-compose up -d --force-recreate не работает, а с docker compose не работает, в то время как обычные команды, которые я использовал, например docker-compose up -d и docker-compose down, работают нормально? Это как полуобновление, когда все docker-compose команды начнут глючить одинаково?

ViaTech 25.04.2024 14:33

Справедливости ради, он все равно должен работать. похоже, что в docker-compose закралась ошибка.

Chris Becke 25.04.2024 17:37

Я бы не стал чувствовать себя глупо или удалять вопрос. Я попал сюда только неделю спустя после того, как столкнулся с точно такой же проблемой при выполнении ежемесячной задачи по обновлению образа и перезапуску контейнера, который я запускал последние 3 года. Я предполагаю, что это результат обновления Debian, которое я выполнил пару недель назад, одновременно обновляя Docker. Думаю, я бы столкнулся с этой проблемой, если бы контейнеры не были настроены на перезапуск: если не остановлено

dmakovec 03.05.2024 03:14

@dmakovec определенно не удаляет вопрос/ответ. Почему? Потому что моя промежуточная среда во всех аспектах является зеркалом моей производственной среды, но по «какой-то» причине моя проблема сохранялась в рабочей среде, но была/по-прежнему не имеет значения для подготовки. Я обновил обе среды, чтобы использовать новые команды, но это не очевидная проблема «просто используйте docker-compose вместо docker-compose» теперь, когда я увидел область действия, это странно, и я не могу полностью отладить, как было в журналах ошибок почти ничего полезного... в любом случае, я рад, что вы поняли свою проблему

ViaTech 03.05.2024 03:33
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
8
5
6 014
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как отмечалось в бесчисленных сообщениях здесь и как отмечалось в комментариях @ChrisBecke, это было причиной устаревших команд в Docker. Сейчас 2024 год, и все обновилось.

По какой-то причине --force-recreate с docker-compose теперь не работает в моей производственной системе после обновлений системы, а docker compose up -d --force-recreate работает как положено. (Обратите внимание на удаление -)

Странно то, что я размещал на DigitalOcean и на днях запускал обновления через apt-get..., и я заметил, что докер обновляется... но причину этой ошибки было нелегко выяснить, поэтому я и спросил здесь. Это также не повлияло на мою промежуточную среду, поэтому я не уверен, в чем причина того, что исходные команды не работают...

В 2024 году вам просто нужно использовать следующую команду «docker compose up»! Я попробовал и у меня получилось

Я очень рад, что вы решили свою проблему, для меня это была странная проблема, учитывая годы нормального использования. Однако я бы предложил добавить больше контекста к вашему ответу. В том виде, в котором вы сейчас это написали, без особой информации, вероятно, это должен быть комментарий... и этот комментарий был написан @ChrisBecke

ViaTech 10.05.2024 20:19

Это было так просто. Спасибо за этот ответ.

Redsandro 05.07.2024 16:49

Другие вопросы по теме