在我们公司,我们使用了几种更新数据库模型的方法。我们使用 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 数据库,并使用基本映像 mcr.microsoft.com/dotnet/core/sdk:3.1 AS 构建运行 dbUp 并以这种方式连接到 sql db。这在这里也不起作用是我的 docker-compose.yml 文件(对不起,由于某种原因,我无法在这里正确地复制代码:
版本:“3.7”服务:ms-sql-server:
图像:mcr.microsoft.com/mssql/server:2019-最新端口:-“1477:1433”环境:SA_PASSWORD:“SuperFun!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 Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问
/bin/sh: 1: 用户: 未找到 /bin/sh: 1: --WithSeedOnce: 未找到
根据我的研究,我虽然在 docker 映像之间使用 docker compose 时可以引用 ms-sql-server 而不是本地主机。同样在执行最后一个命令时如何附加多个参数?似乎没有考虑 --WithSeedOnce 和应用程序的论点