Docker Compose YAML文件中youmas服务环境配置错误求助
修复Docker Compose中youmas服务的配置错误
问题分析
你的youmas服务存在两个关键问题:
- 缺少镜像或构建配置:Docker Compose无法确定启动该服务所需的镜像文件,这是导致配置错误的核心原因。
- 你最初提供的错误示例中存在YAML缩进错误:
environment下的XDEBUG_CONFIG未按层级正确缩进(虽然完整代码里缩进已修正,但需注意YAML对缩进要求严格,必须保持一致的缩进层级)。
解决方案
针对上述问题,给出两种常见修复方式:
方式一:复用已有的youmas-app镜像
如果youmas服务是基于已定义的youmas-app镜像创建,只需添加image字段指定镜像:
youmas: image: youmas-app # 添加镜像配置,复用已构建的youmas-app镜像 environment: XDEBUG_CONFIG: remote_host=172.17.0.1 remote_port=9000 remote_enable=1 networks: - youmas
方式二:指定单独的构建配置
如果youmas服务需要使用独立的Dockerfile,添加build字段定义构建规则:
youmas: build: context: . dockerfile: ./path/to/your/Dockerfile # 替换为实际Dockerfile的路径 environment: XDEBUG_CONFIG: remote_host=172.17.0.1 remote_port=9000 remote_enable=1 networks: - youmas
修复后的完整Docker Compose代码
version: "3" services: #PHP youmas-app: build: context: . dockerfile: Dockerfile args: - WITH_XDEBUG=true image: youmas-app container_name: youmas-app restart: unless-stopped tty: true environment: SERVICE_NAME: app SERVICE_TAGS: dev # If you don't want to use xDebug, set remote_enable=0 PHP_IDE_CONFIG: "serverName=Docker" XDEBUG_CONFIG: remote_host=192.168.178.33 remote_port=9001 working_dir: /var/www volumes: - ./:/var/www - ./docker/production/php/local.ini:/usr/local/etc/php/conf.d/local.ini youmas: image: youmas-app # 新增镜像配置 environment: XDEBUG_CONFIG: remote_host=172.17.0.1 remote_port=9000 remote_enable=1 networks: - youmas #Nginx youmas-webserver: build: context: . dockerfile: "./docker/production/nginx/Dockerfile" container_name: youmas-webserver restart: unless-stopped tty: true ports: - "80:80" - "443:443" volumes: - ./:/var/www - ./docker/production/nginx/conf.d/:/etc/nginx/conf.d/ - ./docker/production/certbot/conf:/etc/letsencrypt - ./docker/production/certbot/www:/var/www/certbot networks: - youmas command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"''' # Certbot SSL certbot: image: certbot/certbot volumes: - ./docker/production/certbot/conf:/etc/letsencrypt - ./docker/production/certbot/www:/var/www/certbot entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" #MySQL youmas-database: image: mysql:5.7.22 container_name: youmas-database restart: unless-stopped tty: true ports: - "3306:3306" environment: MYSQL_DATABASE: youmas MYSQL_ROOT_PASSWORD: K4@|ahdpof8@@!~ SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - dbdata:/var/lib/mysql/ - ./docker/production/mysql/my.cnf:/etc/mysql/my.cnf networks: - youmas #PHP My Admin youmas-phpmyadmin: image: phpmyadmin/phpmyadmin ports: - "7000:80" links: - youmas-database:youmas-database environment: MYSQL_USER: root MYSQL_PASSWORD: codeverze MYSQL_ROOT_PASSWORD: codeverze networks: - youmas #Networks networks: youmas: driver: bridge #Volumes volumes: dbdata: driver: local
内容的提问来源于stack exchange,提问作者laalaaala
相关产品推荐
相关产品推荐

