我正在尝试构建和运行一个 ASP.NET Core 应用程序并使用 newman 对其进行测试。这是我拥有的管道:
services:
- mcr.microsoft.com/mssql/server:2019-CU14-ubuntu-20.04
- docker:19.03.12-dind
variables:
VERSION: "0.0.0"
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: *******
DOCKER_TLS_CERTDIR: "/certs"
stages:
- test
postman_tests:
stage: test
tags:
- docker
script:
- docker run -p 5555:80 -v $(pwd)/CatalogService/:/app/ -w /app -e ASPNETCORE_URLS=http://+:80 -e ASPNETCORE_ENVIRONMENT=Development -t mcr.microsoft.com/dotnet/sdk:6.0.100-alpine3.14-amd64 dotnet run --project ./CatalogService.csproj
- sleep 120s
- docker run -v $(pwd)/test:/etc/newman -t postman/newman:alpine run "CatalogService.postman_collection.json" --reporters="cli"
我今天刚开始学习 Docker 以及如何将它与 Gitlab 的管道一起使用,如果您有更好的方法,请告诉我。
为什么应用程序无法访问 mssql 服务?这是我得到的错误:
[...]
Status: Downloaded newer image for mcr.microsoft.com/dotnet/sdk:6.0.100-alpine3.14-amd64
=Building...
=info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 6.0.0 initialized 'CatalogDb' using provider 'Microsoft.EntityFrameworkCore.SqlServer:6.0.0' with options: None
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught)
[...]
这是我在appsettings.json
文件中使用的连接字符串:
"ConnectionStrings": {
"CatalogDb": "Password=****;Persist Security Info=True;User ID=SA;Database=CatalogDb;Server=mcr.microsoft.com__mssql__server"
},
如果我使用 .net sdk 映像运行以下管道,则应用程序将启动并可以连接到数据库。但是这样我就不能用newman来测试了。或者我可以吗?
build:
stage: build
tags:
- docker
image:
name: mcr.microsoft.com/dotnet/sdk:6.0
entrypoint: [""]
script:
- dotnet build ./CatalogService.csproj --configuration Release --no-self-contained
- dotnet run --project ./CatalogService.csproj
variables:
ErrorActionPreference: stop
更新
我添加了一个别名并更新了服务的连接字符串,但它仍然没有连接。
services:
- name: mcr.microsoft.com/mssql/server:2019-CU14-ubuntu-20.04
alias: mssql
- docker:19.03.12-dind
Password=*****;Persist Security Info=True;User ID=SA;Database=CatalogDb;Server=mssql
我还添加了此处FF_NETWORK_PER_BUILD
指定的变量,但应用程序仍未连接到数据库
postman_tests:
stage: test
tags:
- docker
variables:
FF_NETWORK_PER_BUILD: "true"
script:
- docker run -p 5555:80 -v $(pwd)/CatalogService/:/app/ -w /app -e ASPNETCORE_URLS=http://+:80 -e ASPNETCORE_ENVIRONMENT=Development -t mcr.microsoft.com/dotnet/sdk:6.0.100-alpine3.14-amd64 dotnet run --project ./CatalogService.csproj
- sleep 120s
- docker run -v $(pwd)/test:/etc/newman -t postman/newman:alpine run "CatalogService.postman_collection.json" --reporters="cli"