docker - 从 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/
解决方案
推荐阅读
- sql - BigQuery GROUP BY ... HAVING 要求对其他列进行分组
- bash - 让 bash 解释存储在包含文件路径的变量中的双引号
- typeorm - 如何处理涉及架构创建、数据插入、架构随时间更改的迁移?
- javascript - 检查字符串的第一个字符是否是 JavaScript 中的字母
- javascript - ++ 两个输出相同时的数字
- javascript - 无法使用 Netflix 读取 null 的属性“getAttribute”
- awk - 在基于模式匹配(SED 或 AWK)移动位置的同时向文件数据添加标题,同时保留计数
- postgresql - Nest.js typeorm coulmn 包含空值错误?
- python - 在 Ubuntu 20.04 上运行 pyinstaller 会创建无法正常运行的文件
- angular - Heroku Angular Deploy - 脚本文件...不存在