docker - 如何从 Azure Devops ubuntu 构建代理访问 docker sql server 数据库?
问题描述
我正在尝试对 Azure Devops 管道中正在运行的 dockerized .net 核心应用程序运行一些集成测试,但我似乎无法让 ubuntu 代理连接到也在 docker 中运行的 SQL 服务器数据库。
Microsoft.Data.SqlClient.SqlException : Cannot open database "OconnorEventsEventCatalogDb" requested by the login. The login failed. Login failed for user 'sa'.
这是我正在使用的连接字符串...
Server=127.0.0.1,1433;Database=OconnorEventsEventCatalogDb;User=sa;Password=<Password>
当我执行 adocker compose up -d
后跟 a时,这在本地有效dotnet test <PathToTestProject>
尝试访问数据库的实际代码在这里...
var options = new DbContextOptionsBuilder<EventCatalogDbContext>()
.UseSqlServer(Global.ConnectionString);
using (var context = new EventCatalogDbContext(options.Options))
{
Policy
.HandleResult<DatabaseFacade>(d => d.CanConnect() != true)
.Retry(3, onRetry: (exception, retryCount) => { Thread.Sleep(10000); })
.Execute(() => context.Database);
await context.Database.ExecuteSqlRawAsync("DELETE FROM Categories");
await context.Database.ExecuteSqlRawAsync("DELETE FROM Events");
context.Categories.Add(category);
context.Events.AddRange(events);
await context.SaveChangesAsync();
}
我尝试添加重试策略以防 sql server 容器尚未准备好但仍然失败。
我还在docker ps
管道中添加了一个响应以下内容的...
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2cf21d130b4 oconnoreventseventcatalog "dotnet OconnorEvent…" 1 second ago Up Less than a second 80/tcp, 443/tcp, 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp oconnoreventseventcatalog
44d73605aa85 mcr.microsoft.com/mssql/server "/opt/mssql/bin/perm…" 1 second ago Up Less than a second 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp oconnoreventsqlserver
我在这里错过了什么吗?
这是我的docker-compose.yaml
文件,专门用于针对正在运行的项目运行集成测试...
version: '3.4'
networks:
oconnorevents-network:
services:
oconnorevents.eventcatalog:
container_name: oconnoreventseventcatalog
image: oconnoreventseventcatalog
build:
context: ../
dockerfile: OconnorEvents.EventCatalog/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:5000
- ConnectionStrings__DefaultConnection=Server=oconnoreventsqlserver;Database=OconnorEventsEventCatalogDb;User=sa;Password=<Password>
ports:
- "5000:5000"
networks:
- oconnorevents-network
depends_on:
- oconnorevents.sqlserver
oconnorevents.sqlserver:
container_name: oconnoreventsqlserver
image: "mcr.microsoft.com/mssql/server"
user: root
ports:
- "1433:1433"
environment:
SA_PASSWORD: "<Password>"
ACCEPT_EULA: "Y"
networks:
- oconnorevents-network
解决方案
推荐阅读
- wordpress - 如何修复我的 localhost 或 apache 配置?
- android - Android MediPlayer prepareAsync() java.lang.IllegalStateException
- javascript - SQL 滞后与 jquery 变量
- javascript - VUEJS - 将我的方法的返回绑定到我的子模板
- javascript - 从当前帖子自定义字段中提取简码并在 Wordpress 中执行
- swiftui - 如何直接从 SwiftUI 中的 Widget 打开 Safari?
- java - 如何有效地使用 CompletableFuture 映射每个输入的异步任务
- spring-boot - Spring Boot + Thymeleaf:组合过滤和分页列表
- mysql - 如何修复 InnoDB 损坏的数据结构?
- android - 当数据按模型类在回收站视图中获取 firebase 数据库时,错误应用程序崩溃