sql-server - Visual Studio 2017 15.3 Dockerize 数据库项目

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

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

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

我能够轻松地“dockerize”MVC 项目(右键单击,添加 Docker 支持)但是在尝试 dockerize 数据库项目时不断收到错误:Value cannot be null。参数名称: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.

提前致谢!

最佳答案

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

关于sql-server - Visual Studio 2017 15.3 Dockerize 数据库项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685155/

相关文章:

sql-server - 未为RPC配置服务器

visual-studio - 如何让 Visual Studio 使用系统类型 (Int32) 而不是内置别名 (int) 生成代码

c# - 如何为自定义创建的类获取智能感知?

c++ - 奇怪的预处理

mongodb - Mongodb与docker-compose-创建用户

sql - 如何提高 NOT IN 查询的性能

php - 当我在将数据导入数据库时​​运行基于脚本浏览器的安装时,出现错误

sql - 当给定的列值为零时,如何使用上一行的值?

docker - 为什么我无法访问 docker-compose 创建的服务?

docker - 用于生产的Dockerfile “right approach”是什么?