【发布时间】:2021-02-03 02:56:10
【问题描述】:
在我们公司,我们使用几种更新数据库模型的方法。我们使用 sqlproj 和 dacpacs 以及使用 DbUp 的 .net 核心应用程序。根据这篇文章automating-sql-server-2019-docker-deployments
,我已经成功使用 dacpac 进行容器化现在我正在开发 Db Up。我试图解决一些挑战,但我无法解决它们。
-
我的第一个想法是基于 mcr.microsoft.com/mssql/server:2019-latest 生成一个 dockerfile,然后安装 .net 核心运行时并在 sql 容器中运行构建的 dbup。 .net 核心运行时很难运行,我似乎无法让它工作。
-
我试图使用 docker-compose 来构建一个规范的 sql db,并使用基本映像 mcr.microsoft.com/dotnet/core/sdk:3.1 AS build 运行 dbUp,并以这种方式连接到 sql db。这也行不通 这是我的 docker-compose.yml 文件(抱歉,由于某种原因,我无法在此处正确复制代码:
版本:“3.7”服务:ms-sql-server:
图片:mcr.microsoft.com/mssql/server:2019-latest
端口:
- “1477:1433”
环境:
SA_PASSWORD:“超级有趣!23”
ACCEPT_EULA: "Y" dbup-exe:
构建:.
取决于:
- ms-sql-server
在我的 Dockerfile 中,我正在调用数据库,但它不会连接到它
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["/Sentinel.DbUp.csproj", "Sentinel.DbUp/"]
RUN dotnet restore "Sentinel.DbUp/Sentinel.DbUp.csproj"
WORKDIR "/src/Sentinel.DbUp"
COPY . .
RUN dotnet build "Sentinel.DbUp.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "Sentinel.DbUp.csproj" -c Release -o /app
RUN dotnet run Sentinel.DbUp --ConnectionString=Server=ms-sql-server,1477;Database=Sentinel_Local;User Id=sa;Password=SuperFun!23; --WithSeedOnce --EnsureDatabase --PerformUpgrade
我有两个错误
System.Data.SqlClient.SqlException (0x80131904):网络相关或 建立连接时发生特定于实例的错误 SQL 服务器。服务器找不到或无法访问
/bin/sh: 1: 用户: 未找到 /bin/sh: 1: --WithSeedOnce: 未找到
根据我的研究,我虽然在 docker 映像之间使用 docker compose 时可以引用 ms-sql-server 而不是本地主机。 同样在执行最后一个命令时如何附加多个参数?似乎 --WithSeedOnce 没有被考虑和应用程序的参数
【问题讨论】:
-
“我们使用 sqlproj 和 dacpacs 以及我们有一个使用 DbUp 的 .net 核心应用程序” - 您是否考虑过简化为使用单一方法?
标签: sql-server linux docker docker-compose dbup