执行docker-compose up --build报'ContainerConfig'错误,求解决
问题描述
按照教程操作,运行命令:
docker-compose up --build
出现以下错误:
Building app [+] Building 4.0s (11/11) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 351B 0.0s => [internal] load metadata for docker.io/library/python:3.11 4.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build context 0.0s => => transferring context: 290B 0.0s => [1/6] FROM docker.io/library/python:3.11@sha256:a87accdfc2fd5cca7e2ffeabb5c32749b932bc3d1e5a25c3b6adc0c26af7fce8 0.0s => CACHED [2/6] WORKDIR /code 0.0s => CACHED [3/6] ADD ./siel1.pem /ssl_certs/siel1.pem 0.0s => CACHED [4/6] COPY ./requirements.txt /code/requirements.txt 0.0s => CACHED [5/6] RUN pip install --no-cache-dir --cert /ssl_certs/siel1.pem -r /code/requirements.txt 0.0s => CACHED [6/6] COPY ./app /code/app 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:0538dd04d8c22c701d6a71dd31ee66b02fea872cff066500f4e18f29f1d4afeb 0.0s => => naming to docker.io/library/ml-docker-flask-api_app 0.0s Recreating 51ed37ac1d4a_ml-docker-flask-api_app_1 ... ERROR: for 51ed37ac1d4a_ml-docker-flask-api_app_1 'ContainerConfig' ERROR: for app 'ContainerConfig' Traceback (most recent call last): File "/usr/bin/docker-compose", line 33, in <module> sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')()) File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main command_func() File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command handler(command, command_options) File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper result = fn(*args, **kwargs) File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1186, in up to_attach = up(False) File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1166, in up return self.project.up( File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up results, errors = parallel.parallel_execute( File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute raise error_to_reraise File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer result = func(obj) File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do return service.execute_convergence_plan( File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan return self._execute_convergence_recreate( File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate containers, errors = parallel_execute( File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute raise error_to_reraise File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer result = func(obj) File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate return self.recreate_container( File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container new_container = self.create_container( File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container container_options = self._get_container_create_options( File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options container_options, override_options = self._build_container_volume_options( File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options binds, affinity = merge_volume_bindings( File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings old_volumes, old_mounts = get_container_data_volumes( File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes container.image_config['ContainerConfig'].get('Volumes') or {} KeyError: 'ContainerConfig'
我的Dockerfile内容:
FROM python:3.11 WORKDIR /code ADD ./custom.pem /ssl_certs/custom.pem COPY ./requirements.txt /code/requirements.txt RUN pip install --no-cache-dir --cert /ssl_certs/custom.pem -r /code/requirements.txt COPY ./app /code/app EXPOSE 8000 CMD ["uvicorn", "app.server:app", "--host", "0.0.0.0", "--port", "8000"]
我的docker-compose.yml内容:
version: '3' services: app: build: . ports: - "8000:8000" volumes: - .:/code command: uvicorn app.server:app --host 0.0.0.0 --port 8000
请问哪里配置错了?
解决方案
这个错误是旧版本docker-compose(你当前用的1.29.2)与新版本Docker镜像的配置结构不兼容导致的——新版本镜像的image_config字段中不再包含ContainerConfig,旧版docker-compose无法识别这个变化。
解决方法如下:
优先更新docker-compose到最新稳定版
卸载旧版本,安装最新版(以Linux系统为例):sudo apt remove docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose验证更新结果:
docker-compose --version临时修复:清理旧容器后重建
如果暂时无法更新docker-compose,可先清理旧容器和缓存再尝试构建:docker-compose down -v docker-compose build --no-cache docker-compose up注意:这种方法只是临时规避问题,后续仍可能遇到兼容性问题,建议优先选择更新docker-compose。
另外,你的配置存在一处细节不一致:Dockerfile中写的是ADD ./custom.pem,但构建日志里显示的是ADD ./siel1.pem,请确保本地文件路径和文件名完全匹配,避免构建时出现文件找不到的问题。
内容的提问来源于stack exchange,提问作者Sazzad Hissain Khan
相关产品推荐
相关产品推荐

