如何使用 docker-compose.override.yml 为 App_Data 文件夹添加卷?
How can I add a volume for the App_Data folder using docker-compose.override.yml?
我正在试验 Visual Studio 的 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
现在我已经尝试了几乎所有在我的 docker-compose.override.yml
文件中指定 volumes
的变体,包括:
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.
正确的语法是什么?
如果我对你的问题的理解正确,你想将卷挂载 "C:\inetpub\wwwroot\App_Data" 到容器中,对吗?
如果是这种情况,您应该在 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
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:
我认为这里的问题是,您正在尝试挂载一个已经存在的目录。
我正在试验 Visual Studio 的 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
现在我已经尝试了几乎所有在我的 docker-compose.override.yml
文件中指定 volumes
的变体,包括:
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.
正确的语法是什么?
如果我对你的问题的理解正确,你想将卷挂载 "C:\inetpub\wwwroot\App_Data" 到容器中,对吗?
如果是这种情况,您应该在 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
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:
我认为这里的问题是,您正在尝试挂载一个已经存在的目录。