我遇到了一个看起来非常奇怪的问题,我希望以前有人遇到过。
我有一个 docker-compose 文件,其中包含 redis 服务。没什么特别的,我只是从 docker hub 获取最新的 redis。我今天重新部署,通常运行
--force-recreate
来向下/向上容器,但是当我今天尝试运行 --force-recreate
时,我遇到了以前从未见过的奇怪错误(昨天效果很好)。
奇怪的是,运行正常的向下/向上命令可以正常工作,没有任何问题。我是不是错过了什么?
以下是可以无错误地关闭/启动我的系统的命令:
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml up -d
这是应该没问题的命令,但它因 redis' docker-compose 的 'ContainerConfig' 错误而失败:
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
这是 redis 服务的简单
docker-compose
配置:
version: '3.8'
services:
redis:
image: redis:latest
restart: always
ports:
- "6379"
正如这里无数帖子中所指出的,以及 @ChrisBecke 的评论中所指出的,这是 Docker 中命令贬值的原因。现在是 2024 年,事情已经更新了。
无论出于何种原因,在系统更新后,带有
--force-recreate
的 docker-compose
现在在我的生产系统上失败,而 docker compose up -d --force-recreate
按预期工作。 (注意删除-
)
奇怪的是,我在 DigitalOcean 上托管,并在前几天通过
apt-get...
运行了更新,并且我确实注意到 docker 正在更新......但是这个错误不容易找出原因,这就是我在这里问的原因。它也没有影响我的暂存环境,所以不确定原始命令不起作用的原因是什么......