首页 > 解决方案 > 从 bash 脚本运行时,集成测试卡在启动时

问题描述

我正在运行一个问题,其中集成测试在一个实例中按预期工作,而在另一个实例中卡在启动状态。下面是 2 个 docker 文件和脚本文件。

工作 docker 文件的入口点设置为运行 dotnet test 命令。有问题的案卷文件将入口点设置为一个脚本文件,该文件只是休眠 10 秒并运行 dotnet test 命令。

当我运行有问题的 docker 文件(带有脚本的文件)时,测试执行开始但在启动时卡住了。无论我等待多长时间,它都停留在启动状态。输出状态测试文件找到、发现测试并开始执行,但在我停止容器之前保持不变。

工作中的 docker 文件在 30 秒左右运行完成。注意我通过撰写文件运行所有内容。我不确定为什么通过脚本文件运行 dotnet test 命令时测试会挂起。我可以在没有 docker 的情况下在本地运行它,没有任何问题,我可以在 docker 中运行它,并将入口点设置为 dotnet test 命令,但无法解决如何通过脚本文件运行它。

工作泊坞窗文件

FROM mcr.microsoft.com/dotnet/sdk:latest AS build
WORKDIR /src
#copy relevant project files, run dot net restore and copy everything else
#note I removed a large portion of the docker file here which is  just copying .csproj files

RUN chmod +x startup.sh
ENTRYPOINT ["dotnet", "test", "--verbosity=normal", "--logger:trx;LogFileName=integration_tests.trx", "--results-directory:/results/integration"]

卡住 docker 文件

FROM mcr.microsoft.com/dotnet/sdk:latest AS build
WORKDIR /src
#copy relevant project files, run dot net restore and copy everything else
#note I removed a large portion of the docker file here which is  just copying .csproj files

RUN chmod +x startup.sh
ENTRYPOINT ["/src/startup.sh"]

启动.sh - bash 文件

#!/bin/sh
sleep 10

echo "Slept 10 seconds - executing command"
dotnet test --verbosity "normal" --logger "trx;LogFileName=integration_tests.trx" --results-directory "/results/integration"

编写文件

version: '3.4'

# docker ports host:container (80:8080 maps 80 on host to 8080 in container)
services:
  integration.test:
    image: integrationtest
    container_name: integrationtest
    build:
    #context is relative to location of compose file
      context: .
      dockerfile: src\Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - MassTransit:Host=rabbitmq
      - MassTransit:ImageDeletedEndpoint=rabbitmq://rabbitmq/ImageDeleted
    volumes:
      - ./volumes/tests:/results
    depends_on:
      - test.viewdb
      - rabbitmq

  test.viewdb:
    image: ravendb/ravendb:ubuntu-latest
    container_name: testviewdb
    environment:
      - RAVEN_Setup_Mode=None 
      - RAVEN_License_Eula_Accepted=true
      - RAVEN_Security_UnsecuredAccessAllowed=PrivateNetwork
    ports:
      - "8080:8080"
      - "38888:38888"
    volumes:
      - ./volumes/config:/opt/RavenDB/config
      - ./volumes/data:/opt/RavenDB/Server/RavenData

  rabbitmq:
    image: rabbitmq:management
    hostname: rabbitmq
    container_name: rabbitmq
    environment:
      - RABBITMQ_ERLANG_COOKIE='secretcookiehere' 
      - RABBITMQ_DEFAULT_USER=broker
      - RABBITMQ_DEFAULT_PASS=password
    expose:
      - "15672"
      - "5672"
    volumes:
      - ./volumes/rabbitmq:/var/lib/rabbitmq/mnesia/

标签: dockerasp.net-core

解决方案


推荐阅读