Docker部署WordPress报错:services must be a mapping求助
问题解决:Docker Compose报错'services must be a mapping'
我要搭建一个网站草稿,虚拟机没法配置Web界面,所以选在Ubuntu系统上用Docker容器实现。复制教程里的docker-compose.yml内容后,执行docker-compose up -d时一直报错:services must be a mapping。我猜是文件缩进问题,但不会调整,改了之后报错变了,肯定是缩进的锅,附上原来的yml内容:
version: '3.3' services: database: image: mysql:5.7.37 volumes: - database_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: myrootpassword MYSQL_DATABASE: wp_db MYSQL_USER: admin MYSQL_PASSWORD: admin wordpress: depends_on: - database image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: database:3306 WORDPRESS_DB_USER: admin WORDPRESS_DB_PASSWORD: admin WORDPRESS_DB_NAME: wp_db volumes: database_data: {}
YAML格式对缩进要求极严,必须用空格(不能用Tab键),每个层级的缩进量要统一(常用2或4个空格)。你的yml文件里,所有服务的子配置项都没有缩进,导致Docker Compose无法识别服务结构,才报出这个错误。
下面是修正后的完整docker-compose.yml:
version: '3.3' services: database: image: mysql:5.7.37 volumes: - database_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: myrootpassword MYSQL_DATABASE: wp_db MYSQL_USER: admin MYSQL_PASSWORD: admin wordpress: depends_on: - database image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: database:3306 WORDPRESS_DB_USER: admin WORDPRESS_DB_PASSWORD: admin WORDPRESS_DB_NAME: wp_db volumes: database_data: {}
修正说明:
database、wordpress作为services的子项,需要缩进2个空格- 每个服务下的
image、volumes、restart等配置项,要再缩进2个空格(相对于服务名称) - 顶级的
volumes配置要和services、version同级,不能缩进
内容的提问来源于stack exchange,提问作者LadyG
相关产品推荐
相关产品推荐

