0

我正在尝试构建和运行一个 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"
4

1 回答 1

0

我错过--network=hostdocker run commands. 现在应用程序与数据库成功连接。

于 2021-12-01T02:56:03.073 回答