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

Azure容器应用服务Docker Compose绑定挂载启动报错求助

Azure容器应用服务启动my_app报错解决方案

报错信息

ERROR - Exception in multi-container config parsing: YamlException: (Line: 22, Col: 9, Idx: 498) - (Line: 22, Col: 37, Idx: 526): Bind mount must start with ${WEBAPP_STORAGE_HOME}.

问题根源

Azure Web App for Containers 对docker-compose的卷挂载有强制规则:

  • 绑定挂载不能使用相对路径(如./backend/:/usr/src/backend/),必须以${WEBAPP_STORAGE_HOME}开头
  • 本地声明的命名卷无法直接使用,必须映射到Azure配置的存储路径

修改方案

1. 替换所有相对路径挂载

将docker-compose中所有以./开头的绑定挂载,替换为${WEBAPP_STORAGE_HOME}开头的路径,示例:

  • 原./backend/:/usr/src/backend/ → 修改为 ${WEBAPP_STORAGE_HOME}/backend:/usr/src/backend/
  • 原./frontend/:/usr/src/frontend/ → 修改为 ${WEBAPP_STORAGE_HOME}/frontend:/usr/src/frontend/

2. 调整命名卷为Azure兼容格式

删除原配置中顶级的volumes:节点,把postgres_data、static_volume、media_volume这些命名卷直接替换为${WEBAPP_STORAGE_HOME}下的路径。

修改后的完整docker-compose配置

version: '3'

services:
  db:
    container_name: my_app_django_db
    image: postgres:14.5-alpine
    volumes:
        - ${WEBAPP_STORAGE_HOME}/postgres_data:/var/lib/postgresql/data/
    networks:
      - my_app_network
    env_file:
      - ./.env.prod
      
  app:
    container_name: my_app_django_app
    build:
      context: ./backend
      dockerfile: Dockerfile.prod
    restart: always
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ${WEBAPP_STORAGE_HOME}/backend:/usr/src/backend/
    networks:
      - my_app_network
    ports:
      - 8000:8000
    env_file:
      - ./.env.prod
    depends_on:
      - db

  react:
    container_name: my_app_react_app
    build:
      context: ./frontend
      dockerfile: Dockerfile.prod
    restart: always
    command: npm start
    volumes:
      - ${WEBAPP_STORAGE_HOME}/frontend:/usr/src/frontend/
    networks:
      - my_app_network
    ports:
      - 3000:3000
    env_file:
      - ./.env.prod
    depends_on:
      - app
  
  redis:
    container_name: my_app_redis
    image: redis:7-alpine
    ports:
      - 6379:6379
    networks:
      - my_app_network

  celery_worker:
    container_name: my_app_celery_worker
    restart: always
    build:
      context: ./backend
    command: celery -A my_app_settings worker --loglevel=info --logfile=logs/celery.log
    volumes:
      - ${WEBAPP_STORAGE_HOME}/backend:/usr/src/backend
    networks:
      - my_app_network
    env_file:
      - ./.env.prod
    depends_on:
      - db
      - redis
      - app

  celery-beat:
    container_name: my_app_celery_beat
    build: ./backend
    command: celery -A my_app_settings beat -l info
    volumes:
      - ${WEBAPP_STORAGE_HOME}/backend:/usr/src/backend
    networks:
      - my_app_network
    env_file:
      - ./.env.prod
    depends_on:
      - db
      - redis
      - app

  nginx:
    container_name: my_app_nginx
    restart: always
    build: ./azure/nginx

    ports:
      - "8080:8080"
    networks:
      - my_app_network
    volumes:
      - ${WEBAPP_STORAGE_HOME}/static_volume:/home/app/web/staticfiles
      - ${WEBAPP_STORAGE_HOME}/media_volume:/home/app/web/mediafiles
    depends_on:
      - app

networks:
  my_app_network:
    driver: bridge

3. 匹配应用服务路径映射

确保你的应用服务路径映射中,已创建对应上述路径的存储映射(比如/backend、/postgres_data、/static_volume等分别映射到你的Azure存储资源),与你提供的配置截图保持一致。


内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:55:22