【问题标题】:docker compose redis with .net core integration testdocker compose redis 与 .net 核心集成测试
【发布时间】:2021-11-29 23:57:04
【问题描述】:

我正在尝试在 docker 中使用 redis 运行集成测试。我的 .yml 文件设置如下,但是当我运行 docker compose up 时,它不显示测试结果或根本不运行 dockerfile,但它响应成功并显示 redis 和测试容器已创建。 redis 容器保持运行,但测试很快退出。要查看测试结果,甚至检查它是否正在运行测试,我需要进行哪些更改?

version: '3.4'

services:  
  redis-service:
    image: redis
    container_name: redis
    restart: on-failure
    ports:
      - "6379:6379" 
  test-service:
    image:  ${DOCKER_REGISTRY-}redistest
    depends_on:
      - redis-service
    build:
      context: .
      dockerfile: tests/RedisTest/Dockerfile

这里是 docker 文件

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["tests/RedisTest/RedisTest.csproj", "tests/RedisTest/"]
RUN dotnet restore "tests/RedisTest/RedisTest.csproj"
COPY . .
RUN dotnet test "/src/tests/RedisTest/RedisTest.csproj" -c Release --logger "trx;LogFileName=test_results.trx"

【问题讨论】:

  • 测试容器在测试完成后关闭,所以它按预期工作。要查看测试的进展情况,您可以使用 docker ps -a 找到退出的容器,然后使用 docker logs <container-name> 查看日志。
  • @HansKilian 感谢您的回复。日志是空的,我什至不认为它在 docker compose up 上读取 dockerfile,因为当我传递一个不存在的文件时它不会抱怨。当我执行 docker compose build 时,它会运行 dockerfile,但由于它跳过了 redis 映像,因此测试失败了。

标签: docker asp.net-core .net-core redis


【解决方案1】:

我终于找到问题了

  1. 从测试服务中删除映像:${DOCKER_REGISTRY-}redistest,因为我们不是从映像构建,而是从 docker 文件构建
  2. 最重要的一点:我愚蠢地交替使用 RUN 和 CMD。将 RUN 命令替换为 CMD 将在两个容器启动后运行测试。

【讨论】:

猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
相关资源
最近更新 更多