Вы используете runtime образ для запуска теста команды sdk . Ваш final от base и base от runtime .
Я успешно использовал модульные тесты в качестве промежуточного шага при сборке контейнера, но никогда не тестировал интеграцию с docker-compose. Основное отличие состоит в том, что я использовал команду RUN
вместо entrypoint/cmd
, поэтому тесты уже выполняются при сборке контейнера. Основным преимуществом является то, что при неудачных испытаниях отсутствует окончательное изображение. Но опять же, это были чисто юнит-тесты, а не интеграционные тесты. Хотя я могу представить, что это тоже сработает.
Вот мой полный пример:
FROM microsoft/dotnet:2.0-sdk AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY test.sln ./test.sln
COPY program/program.csproj ./program/program.csproj
COPY program.tests/program.tests.csproj ./program.tests/program.tests.csproj
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet test program.tests -c Release
RUN dotnet publish program -c Release -o /app/out
# build runtime image
FROM microsoft/dotnet:2.0-runtime
WORKDIR /app
COPY --from=build-env /app/out ./
ENTRYPOINT ["dotnet", "program.dll"]