Ubuntu执行Docker Compose代码遇‘yaml: invalid leading UTF-8 octet’错误求助
解决Docker Compose的"yaml: invalid leading UTF-8 octet"错误
可能的原因及修复步骤
1. 检查并修正YAML文件编码
- 确认
docker-compose.yml为UTF-8无BOM编码:- 在Ubuntu终端执行
file -i docker-compose.yml查看编码,输出需包含charset=utf-8 - 若编码不符,用
iconv -f 原编码 -t utf-8 docker-compose.yml > new-docker-compose.yml转换后替换原文件
- 在Ubuntu终端执行
- 排查不可见特殊字符:避免用带格式的编辑器编辑配置文件,改用vim、nano等纯文本工具,删除全角空格、非标准制表符这类异常字符
2. 修正YAML语法错误
你的配置存在多处缩进、格式问题,这些也可能触发解析异常:
database服务中networks缩进错误,需与environment同级web服务的environment混用列表与键值对格式,需统一volumes下的dbwebservice缺少缩进- 同时修正了postgres默认数据目录路径(原配置路径错误),以及Drupal连接数据库的环境变量匹配问题
以下是修正后的完整配置:
version: '3.8' services: database: image: postgres:13 volumes: - dbwebservice:/var/lib/postgresql/data restart: always environment: POSTGRES_PASSWORD: webservice POSTGRES_USER: drupal POSTGRES_DB: webservice networks: - webservice web: image: drupal:latest ports: - "8083:80" restart: always depends_on: - database environment: POSTGRES_HOST: database POSTGRES_DB: webservice POSTGRES_USER: drupal POSTGRES_PASSWORD: webservice networks: - webservice networks: webservice: driver: bridge name: webservicenetwork volumes: dbwebservice:
验证修复
修正后执行docker-compose up -d,检查服务是否正常启动。
内容的提问来源于stack exchange,提问作者EhsanK
相关产品推荐
相关产品推荐

