Docker-Compose.yml缩进问题致Rails环境搭建报错,求排查
Docker Compose配置错误排查(Rails开发环境搭建)
执行命令 docker-compose run web rails new . --force --no-deps --database=mysql 时触发以下错误:
ERROR: The Compose file './docker-compose.yml' is invalid because: Unsupported config option for services.mysql: 'MYSQL_ROOT_PASSWORD' services.mysql.environment contains an invalid type, it should be an object, or an array
错误原因
你的docker-compose.yml中mysql服务的environment配置存在缩进问题。YAML依赖缩进识别层级关系,MYSQL_ROOT_PASSWORD: root没有缩进,被解析为services.mysql的直接配置项,而非environment的子属性,导致Compose无法识别该配置。
修正后的完整配置
version: '3' services: mysql: image: mysql:8.0.16 command: --default-authentication-plugin=mysql_native_password volumes: - ./mysql-data:/var/lib/mysql environment: # 增加缩进,将环境变量归为environment的子项 MYSQL_ROOT_PASSWORD: root web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3001:3000" depends_on: - mysql tty: true
关键修正点
- 在
environment:下方的MYSQL_ROOT_PASSWORD: root前添加缩进(通常用2或4个空格,与mysql服务下的image、command等配置项对齐),确保它属于environment的子属性。
内容的提问来源于stack exchange,提问作者Tsuki
相关产品推荐
相关产品推荐

