使用 docker-compose 为 Windows 容器中的 sql 数据库创建命名卷时,如何消除无效的卷规范错误?
How can I eliminate invalid volume specification error when using docker-compose to create a named volume for sql db in Windows Container?
我正在尝试使用 docker-compose 为 Windows 容器中的 sql 数据库创建命名卷。
我不断收到错误消息:
"严重性代码说明项目文件行抑制状态
构建网络演示时出错
正在重新创建 dockercompose6946136170613312467_webpresentation_1 ...
正在创建 dockercompose6946136170613312467_db_1 ...
正在创建 dockercompose6946136170613312467_db_1 ... 错误
错误:对于 dockercompose6946136170613312467_db_1 无法为服务数据库创建容器:无效的卷规范:'dockercompose6946136170613312467_sqlvolume:/var/opt/mssql:rw'
正在重新创建 dockercompose6946136170613312467_webpresentation_1 ... 完成
错误:对于 db 无法为服务 db 创建容器:无效的卷规范:'dockercompose6946136170613312467_sqlvolume:/var/opt/mssql:rw'
启动项目时遇到错误..
有关更多故障排除信息,请转到 http://aka.ms/DockerToolsTroubleshooting docker-compose C:\Program Files (x86)\Microsoft Visual Studio17\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets 363 "
这是我的 docker-compose 文件:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
ports:
- "1433:1433"
volumes:
- sqlvolume:/var/opt/mssql
volumes:
sqlvolume:
我还应该提到我已经使用 Visual Studio 的 Docker 工具来设置这个项目,这里还有 docker-compose.override.yml 文件:
version: '3.4'
services:
webpresentation:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
networks:
default:
external:
name: nat
任何人都可以指出正确的方向来消除这个错误吗?谢谢!
如果其他人遇到此问题,在我执行 docker volume ls
并意识到实际的卷名称具有自动生成的 "dockercompose" 前缀后,项目已成功构建 Visual Studio。我在数据库的卷定义中使用了更直接的硬盘驱动器文件夹路径。然后我用新名称替换了 "sqlvolume" 的每个实例。我完整的docker-compose文件如下:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
ports:
- "1433:1433"
volumes:
- "C:\ProgramData\Docker\volumes\dockercompose6946136170613312467_sqlvolume:c:\mssql"
volumes:
dockercompose6946136170613312467_sqlvolume:
我正在尝试使用 docker-compose 为 Windows 容器中的 sql 数据库创建命名卷。
我不断收到错误消息: "严重性代码说明项目文件行抑制状态 构建网络演示时出错 正在重新创建 dockercompose6946136170613312467_webpresentation_1 ... 正在创建 dockercompose6946136170613312467_db_1 ... 正在创建 dockercompose6946136170613312467_db_1 ... 错误 错误:对于 dockercompose6946136170613312467_db_1 无法为服务数据库创建容器:无效的卷规范:'dockercompose6946136170613312467_sqlvolume:/var/opt/mssql:rw' 正在重新创建 dockercompose6946136170613312467_webpresentation_1 ... 完成 错误:对于 db 无法为服务 db 创建容器:无效的卷规范:'dockercompose6946136170613312467_sqlvolume:/var/opt/mssql:rw' 启动项目时遇到错误..
有关更多故障排除信息,请转到 http://aka.ms/DockerToolsTroubleshooting docker-compose C:\Program Files (x86)\Microsoft Visual Studio17\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets 363 "
这是我的 docker-compose 文件:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
ports:
- "1433:1433"
volumes:
- sqlvolume:/var/opt/mssql
volumes:
sqlvolume:
我还应该提到我已经使用 Visual Studio 的 Docker 工具来设置这个项目,这里还有 docker-compose.override.yml 文件:
version: '3.4'
services:
webpresentation:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
networks:
default:
external:
name: nat
任何人都可以指出正确的方向来消除这个错误吗?谢谢!
如果其他人遇到此问题,在我执行 docker volume ls
并意识到实际的卷名称具有自动生成的 "dockercompose" 前缀后,项目已成功构建 Visual Studio。我在数据库的卷定义中使用了更直接的硬盘驱动器文件夹路径。然后我用新名称替换了 "sqlvolume" 的每个实例。我完整的docker-compose文件如下:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
ports:
- "1433:1433"
volumes:
- "C:\ProgramData\Docker\volumes\dockercompose6946136170613312467_sqlvolume:c:\mssql"
volumes:
dockercompose6946136170613312467_sqlvolume: