asp.net - 无法将 MsSql 数据库容器用作 Azure Pipeline 中的资源
问题描述
我尝试设置一个管道以使用 selenium 为小型 blazor 应用程序运行 E2E 测试。即使在 Windows 机器上使用容器,本地一切都运行良好。但是在天蓝色的管道中,我没有将应用程序连接到数据库。根据我下面的配置,我尝试了以下连接字符串:
Server=localhost,1433; Database=Master; User ID=sa; Password=Password!1;
Server=docker.host.internal,1433; Database=Master; User ID=sa; Password=Password!1;
Server=db,1433; Database=Master; User ID=sa; Password=Password!1;
没有任何效果:-(
我只有一个小型 blazor 前端和一个 mssql 数据库。我创建了一个 docker compose 文件,它创建了 db 容器以及构建应用程序和运行容器。这是码头工人撰写文件。
version: "3.9"
services:
ms-sql-db:
image: mcr.microsoft.com/mssql/server:2017-latest
container_name: SqlDataBase
ports:
- "1433:1433"
healthcheck:
test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-Usa", "-P", "Password!1", "-Q", "select 1"]
interval: 1s
retries: 20
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Password!1
volumes: #needed to persist the data on local disk
- ~/.aspnet/mssql/data:/var/opt/mssql/data
- ~/.aspnet/mssql/log:/var/opt/mssql/log
- ~/.aspnet/mssql/secrets:/var/opt/mssql/secrets
authfrontend:
container_name: AuthFrontend
build:
context: ../../../../src/AuthFrontend
dockerfile: ./Dockerfile
ports:
- "5000:80"
- "5001:443"
environment:
- ASPNETCORE_ENVIRONMENT=LocalE2ETest
- ASPNETCORE_HTTPS_PORT=5001
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=Password!1
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https
depends_on:
ms-sql-db:
condition: service_healthy
在我的 Windows 机器上本地,使用连接字符串时,前端能够连接到数据库
Server=localhost,1433; Database=Master; User ID=sa; Password=Password!1;
在管道内创建数据库容器作为资源,如下所示:
...
resources:
containers:
- container: SqlDataBase
image: mcr.microsoft.com/mssql/server:2017-latest
ports:
- 1433:1433
options: -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password!1' -e 'MSSQL_PID=Express'
...
- stage: E2ETest
jobs:
- job: Run E2E tests
services:
db: SqlDataBase
steps:
- powershell: docker-compose -f ./docker-compose.Frontend.yml build
displayName: 'build app'
- powershell: docker-compose -f ./docker-compose.Frontend.yml up -d
displayName: 'run app'
- script: dotnet test --collect:"XPlat Code Coverage" -l:trx;LogFileName=../../../out/TestResults/testresult.trx
displayName: 'dotnet test and collect code coverage'
解决方案
推荐阅读
- amazon-web-services - 有什么方法可以知道离线保存的数据是否已经在线同步?
- java - Docker OpenJDK -Xmx 或
- c - 使用范围外声明
- python-3.x - HDFStore 初始化错误:名称未定义
- css - RWD 和智能手机的屏幕 x 浏览器窗口大小
- python - Python 字典迭代:d 与 d.viewkeys()
- r - check.length("fill") 中的错误:'gpar' 元素 'fill' 的长度不得为 0
- php - Google Drive API 上传/下载 - PHP 到客户端
- autoencoder - keras 中的成本函数
- c++ - C++ 节点分配错误:线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)