Docker Compose 3配置报错:VIRTUAL_HOST多行写法问题排查
解决Docker Compose中VIRTUAL_HOST多行配置的YAML语法错误
这个报错是因为你在使用YAML折叠块标量(>)时,缩进格式不符合规则导致的。YAML要求块标量的内容行必须比对应的键有更深的缩进,而你的内容行和VIRTUAL_HOST键的缩进级别一致,解析器会把它当成一个新的顶级键,自然找不到对应的冒号,从而抛出扫描错误。
下面给你几种正确的配置方式:
方式1:正确使用折叠块标量(推荐)
保持你的多行写法,但确保内容行的缩进比VIRTUAL_HOST键更深(比如多2个空格),折叠块标量会自动把换行转换成空格,最终生成正确的逗号分隔字符串:
nginx: image: nginx container_name: nginx environment: VIRTUAL_HOST: > proj1.local,proj2.local, proj3.local,proj4.local, proj5.local
方式2:使用数组形式(部分镜像支持)
如果你的Nginx镜像(比如常用的jwilder/nginx-proxy)支持将VIRTUAL_HOST作为数组传入,可以直接写成数组形式,Docker Compose会自动将其转换为逗号分隔的字符串:
nginx: image: nginx container_name: nginx environment: VIRTUAL_HOST: - proj1.local - proj2.local - proj3.local - proj4.local - proj5.local
方式3:用双引号包裹多行字符串
你也可以用双引号把多行内容包裹起来,YAML会保留换行但最终解析为单行字符串(注意逗号不要换行后遗漏):
nginx: image: nginx container_name: nginx environment: VIRTUAL_HOST: "proj1.local,proj2.local, proj3.local,proj4.local,proj5.local"
内容的提问来源于stack exchange,提问作者Jumpa
相关产品推荐
相关产品推荐

