代码之家  ›  专栏  ›  技术社区  ›  tacos_tacos_tacos

如何使用docker为App\u Data文件夹添加卷-compose.override.yml?

  •  0
  • tacos_tacos_tacos  · 技术社区  · 6 年前

    我正在用visualstudio的 docker 支持并希望为添加卷装载 C:\inetpub\wwwroot\App_Data .

    我的 Dockerfile 看起来像这样:

    FROM microsoft/aspnet:4.7.1-windowsservercore-1709
    ARG source
    WORKDIR /inetpub/wwwroot
    COPY ${source:-obj/Docker/publish} .
    

    docker-compose.yml 文件如下所示:

    版本:'3.4'

    services:
      my.app:
        image: ${DOCKER_REGISTRY}myapp
        build:
          context: .\My.App
          dockerfile: Dockerfile
    

    volumes 在我的 docker-compose.override.yml 文件,包括:

    version: '3.4'
    
    services:
      my.app:
        volumes:
          - "C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    
    services:
      my.app:
        volumes:
          - "C:\\temp\\dockerappdata1":"C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    
    services:
      my.app:
        volumes:
          - type: volume
            source: "app_data"
            target: "C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    volumes:
      app_data:
    

    但在所有情况下,我都无法运行该项目,它会报告任何一种配置问题 compose 或者在启动容器时出现问题,并显示超级无用的消息:

    encountered an error during Start: failure in a Windows system call: The compute system exited unexpectedly.
    

    2 回复  |  直到 6 年前
        1
  •  1
  •   prisar    6 年前
    version: '3.4'
    
    services:
      my.app:
        volumes:
          - "C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    
    services:
      my.app:
        volumes:
          - "C:\\temp\\dockerappdata1":"C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    
    services:
      my.app:
        volumes:
          - type: volume
            source: "app_data"
            target: "C:\\inetpub\\wwwroot\\App_Data"
        ports:
          - "80"
    networks:
      default:
        external:
          name: nat
    volumes:
      app_data:
    

    我认为这里的问题是,您正在尝试挂载一个已经存在的目录。

        2
  •  0
  •   Hani Amr    6 年前

    如果是这种情况,您应该在yaml文件中添加以下内容:

    services:
      my.app:
        volumes:
          - C:\\inetpub\\wwwroot\\App_Data:C:\\temp\\dockerappdata1
         # Syntax is HOST_PATH:CONTAINER_PATH:[ro/rw] (the access mode is optional)
        ports:
          - "80"
    

    https://docs.docker.com/compose/compose-file/#short-syntax-3