Docker Linux - загрузка нативной / общей библиотеки внутри интеграционного теста
Мое решение содержит:
- Проект "А"
- Интеграционный тест проекта 'А
Теперь я создаю контейнер для проекта A. И я провожу интеграционные тесты, используя сценарий оболочки, который создает контейнер докера.
Код контейнера Docker:
docker run \
-v "$(pwd):/src" \
--workdir="/src" \
-e "FIRESTORE_EMULATOR_HOST=${FIRESTORE_EMULATOR_HOST}" \
-e "FIRESTORE_PROJECT_ID=${FIRESTORE_PROJECT_ID}" \
-e "EngineApiBaseUrl=http://engine/" \
-e "ConnectionStrings__SqlConnection=${SQL_CONNECTION_STRING}" \
--link "${container1}:container1" \
--link "${container2}:container2" \
--link "${container3}:container3" \
mcr.microsoft.com/dotnet/core/sdk:3.1-alpine \
dotnet test \
./FunctionalTest/FunctionalTest.csproj \
--logger "trx;LogFileName=../../test-result.trx"
Это работает нормально, он выполняет тесты с использованием ядра 3.1, однако я столкнулся с этой проблемой:
https://github.com/grpc/grpc/issues/15605
И конкретно в моем DockerFile у меня есть:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine AS base
# in support of gRPC: https://github.com/grpc/grpc/issues/15605
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' >> /etc/apk/repositories && apk update --no-cache && apk add --no-cache bash libc6-compat=1.1.19-r11
WORKDIR /app
EXPOSE 80
Однако это изображение не обнаруживается тестовым контейнером и выдает ошибку. Другая странность заключается в том, что локально указанные файлы (в приведенной выше ссылке) создаются при сборке, а "dotnet test" выполняет сборку. Но файлы все еще отсутствуют.
Что я могу для этого сделать? Например, то, что я хотел бы сделать, но не хочу тратить на это час, если это не сработает, - это загрузить файл вручную, извлечь его и скопировать в нужный каталог. Но, как видите, возникает вопрос, что эти файлы обычно создаются при сборке с самого начала.
Есть ли у кого-нибудь рекомендации? Похоже, мне нужно построить еще один конвейер, возможно, специально для интеграционных тестов, и продублировать композицию, чтобы я мог получить это изображение там...