【问题标题】:Visual Studio 2017 15.3 Dockerize Database ProjectVisual Studio 2017 15.3 Dockerize 数据库项目
【发布时间】:2017-08-15 01:09:15
【问题描述】:

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

  • 用 ASP.NET Core 2 MVC 编写的 API
  • 数据库项目

我能够轻松地“dockerize”MVC 项目(右键单击,添加 Docker 支持),但是在尝试 dockerize 数据库项目时不断收到错误:Value cannot be null. Parameter name: stream。我的 Google-fu 让我失望了; closest resource found is for Visual Studio 15.2

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

将 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

修改 docker-composeoverride.yml 文件以公开用于开发 SSMS 访问的端口

version: '3'

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

  webapp-db-service:
    ports:
      - "1433"

这是构建输出

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-compsoe中,看看是否有帮助
  • @TarunLalwani 我尝试了与 compose 文件的其他变体一起使用。我最好的猜测是 VS docker-compose runner 使用来自 .csproj 的信息来构建 API 映像,但无法从中提取信息.dbproj 来构建数据库映像。我尝试手动添加/模仿从 .csproj 到 .dbproj 的值,但没有任何进展。
  • 我在使用多个 docker 容器的解决方案中遇到了同样的错误,这些容器在 15.2 上构建良好,但现在在 15.3 上失败。

标签: sql-server visual-studio docker-compose visual-studio-2017


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多