docker-compose启动报错Additional property web is not allowed问题咨询
Docker Compose配置错误排查
你的配置存在两处核心错误,其中缩进问题是触发当前报错的直接原因:
- 第一处(触发报错的核心原因):YAML缩进不符合规范
YAML语法对缩进敏感性极高,web属于services下的子服务,需要和同级的db服务保持相同的缩进层级。你当前配置里的web块缩进和顶级字段services对齐,导致Docker Compose将web识别为非法的顶级配置项,直接抛出Additional property web is not allowed报错。 - 第二处(隐藏配置错误):WordPress持久化路径笔误
你配置的web服务卷挂载目标路径为/var/wwwh/html,多写了一个字母w,WordPress官方镜像的站点根目录为/var/www/html,该错误会导致站点内容无法正常持久化,启动后会出现访问异常。
修正后的完整配置
version: "3.8" services: db: image: mysql:latest volumes: - type: volume source: dbmysql target: /var/lib/mysql networks: - webappnet environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress MYSQL_DATABASE: wordpress deploy: replicas: 1 update_config: delay: 5s parallelism: 1 restart_policy: condition: on-failure placement: constraints: [node.hostname == master] web: depends_on: - db image: wordpress:latest volumes: - type: volume source: dbweb target: /var/www/html networks: - webappnet environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress deploy: replicas: 1 update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: [node.hostname == slave1] volumes: dbmysql: dbweb: networks: webappnet: driver: overlay name: webappname
注:该配置包含
deploy节点和overlay网络配置,适配Docker Swarm集群部署场景,使用docker stack deploy命令启动即可。如果是单机部署不需要overlay网络和placement约束,可自行删除对应配置。
内容的提问来源于stack exchange,提问作者حسن شفیعی
相关产品推荐
相关产品推荐

