重装Docker Desktop后docker-compose up -d后台模式失效且ps执行报错
问题根因
- YAML配置格式错误:你提供的
docker-compose.yml中,elasticsearch服务的字段比其他同级服务多了1个前置空格,YAML解析器会误将其识别为上层rest-proxy服务的子属性,而非services下的独立服务,打乱整体配置结构,触发volumes must be a mapping的校验报错。 - Compose版本校验规则升级:重装后的Docker Desktop默认搭载Compose V2,对YAML格式的校验规则比旧版本更严格,之前旧版本兼容的不规范缩进现在会直接抛出异常,这也是之前配置能正常运行、重装后报错的核心原因。
- 配置解析失败会导致
docker-compose up -d无法完成加载流程,自然无法进入后台分离模式,进程会卡在校验阶段,按下Ctrl+C就会直接终止进程。
解决方案
步骤1:修正缩进错误
将elasticsearch字段前多余的1个前置空格删除,保证所有一级服务(zookeeper、broker、rest-proxy、elasticsearch、kibana等)的缩进级别完全一致,都属于services下的二级节点。修正后的对应配置片段如下:
rest-proxy: image: confluentinc/cp-kafka-rest:6.2.1 depends_on: - broker - schema-registry ports: - 8082:8082 hostname: rest-proxy container_name: rest-proxy environment: KAFKA_REST_HOST_NAME: rest-proxy KAFKA_REST_BOOTSTRAP_SERVERS: 'broker:29092' KAFKA_REST_LISTENERS: "http://0.0.0.0:8082" KAFKA_REST_SCHEMA_REGISTRY_URL: 'http://schema-registry:8081' elasticsearch: # 此处已删除多余空格,与上层rest-proxy缩进一致 image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ports: - 9200:9200 - 9300:9300
步骤2:验证配置有效性
保存修改后的配置文件,在项目目录执行以下命令校验配置是否合法:
docker-compose config
如果命令无报错输出,说明格式问题已经修复。
步骤3:重启服务
执行以下命令重新启动服务即可:
docker-compose up -d
如果之前有异常启动的残留资源,可以先执行清理命令再启动:
docker-compose down -v docker-compose up -d
修复后docker-compose ps可正常返回容器运行状态,-d参数也会正常生效让容器在后台运行。
内容的提问来源于stack exchange,提问作者Diluted Dev
相关产品推荐
相关产品推荐

