Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Visual Studio 2017 15.3 Dockerize数据库项目_Sql Server_Visual Studio_Docker Compose_Visual Studio 2017 - Fatal编程技术网

Sql server Visual Studio 2017 15.3 Dockerize数据库项目

Sql server Visual Studio 2017 15.3 Dockerize数据库项目,sql-server,visual-studio,docker-compose,visual-studio-2017,Sql Server,Visual Studio,Docker Compose,Visual Studio 2017,拥有Visual Studio 2017(15.3)解决方案和两个项目: 用ASP.NET Core 2 MVC编写的API 数据库项目 我能够轻松地“dockerize”MVC项目(右键单击,添加Docker支持),但在尝试将数据库项目Docker化时,不断出现错误:值不能为null。参数名称:流。我的谷歌fu让我失望;这个 到目前为止我是如何设置数据库项目的 已将Dockerfile添加到根目录: FROM microsoft/mssql-server-linux:latest EXPO

拥有Visual Studio 2017(15.3)解决方案和两个项目:

  • 用ASP.NET Core 2 MVC编写的API
  • 数据库项目
我能够轻松地“dockerize”MVC项目(右键单击,添加Docker支持),但在尝试将数据库项目Docker化时,不断出现错误:
值不能为null。参数名称:流
。我的谷歌fu让我失望;这个

到目前为止我是如何设置数据库项目的

已将Dockerfile添加到根目录:

FROM microsoft/mssql-server-linux:latest
EXPOSE 1433
ENV ACCEPT_EULA=Y
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV MSSQL_TCP_PORT=1433

# Add Database project output from VS build process
RUN mkdir --parents /_scripts/generated
COPY ./_scripts /_scripts/
COPY ./_scripts/generated/*.sql /_scripts/generated/
# Add shell script that starts MSSQL server, waits 60 seconds, then executes script to build out DB (script generated from VS build process)
CMD /bin/bash /_scripts/entrypoint.sh
修改docker-compose.yml文件以包含新项目

version: '3'

services:
  webapp-api-service:
    image: webapp-api
    build:
      context: ./src/API
      dockerfile: Dockerfile

  webapp-db-service:
    image: webapp-db
    build:
      context: ./src/Database
      dockerfile: Dockerfile
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets(279,5): error : Value cannot be null.
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets(279,5): error : Parameter name: stream
2>Done building project "docker-compose.dcproj" -- FAILED.
修改了docker-composeoverride.yml文件以公开用于开发人员SSMS访问的端口

version: '3'

services:
  webapp-api-service:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "80"

  webapp-db-service:
    ports:
      - "1433"
这是构建输出

version: '3'

services:
  webapp-api-service:
    image: webapp-api
    build:
      context: ./src/API
      dockerfile: Dockerfile

  webapp-db-service:
    image: webapp-db
    build:
      context: ./src/Database
      dockerfile: Dockerfile
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets(279,5): error : Value cannot be null.
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets(279,5): error : Parameter name: stream
2>Done building project "docker-compose.dcproj" -- FAILED.

提前谢谢

我昨天遇到了同样的问题。我只是通过删除数据库服务的构建部分来解决这个问题。我现在只需要手动构建数据库项目。

您可以将名为
AppType.cache
的文件添加到
/obj/Docker
,内容
AspNetCore
作为解决方法。

而不是覆盖,将内容合并到一个docker组件中,并查看是否helps@TarunLalwani我尝试过使用其他形式的compose文件。我的最佳猜测是VS docker compose runner使用.csproj中的信息来构建API映像,但未能从.dbproj中提取信息来构建DB映像。我曾尝试手动将值从.csproj添加/模拟到.dbproj,但没有任何进展。我在一个解决方案中遇到了相同的错误,该解决方案使用了多个docker容器,这些容器在15.2上构建得很好,但现在在15.3中失败。