You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:48:25