在Windows容器中使用docker-compose为sql db创建命名卷时,如何消除无效的卷规范错误?

时间:2018-09-08 02:12:26

标签: sql docker docker-compose docker-volume docker-for-windows

我正在尝试使用docker-compose在Windows容器中为sql db创建命名卷。

我不断收到错误消息: “严重性代码描述项目文件行抑制状态 建立网页演示时出错 重新创建dockercompose6946136170613312467_webpresentation_1 ... 创建dockercompose6946136170613312467_db_1 ... 正在创建dockercompose6946136170613312467_db_1 ...错误 错误:对于dockercompose6946136170613312467_db_1无法为服务db创建容器:无效的卷规范:'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 Studio \ 2017 \ 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

任何人都可以为我指出正确的方向,以消除该错误?谢谢!

1 个答案:

答案 0 :(得分:0)

如果其他人遇到此问题,则在执行docker volume ls后,该项目在Visual Studio中成功构建,并意识到实际的卷名具有自动生成的“ dockercompose”前缀。我在数据库的卷定义中使用了更直接的路径访问硬盘驱动器上的文件夹。然后,我用新名称替换了“ 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: