【发布时间】:2021-02-02 13:12:14
【问题描述】:
我有一个解决方案,其中包含两个具有以下结构的项目:
“TestWebApp”项目是一个 xUnit 测试项目,包含软件测试。项目“WebApplication”是应该用 testproject 测试的软件。
该软件运行良好,但现在我想构建一个 docker 容器,该容器应包含在 gitlab ci-cd 管道中。我的问题包含两个步骤:
- 我应该构建一个包含业务应用程序(“WebApplication”)和软件测试(“TestWebApp”)的容器吗?如果是这种情况,我该怎么做?如何在容器中运行软件测试?我的 Dockerfile 如下所示
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
COPY ["TestWebApp/TestWebApp.csproj", "TestWebApp/"]
# ------------------SOFTWARE TEST-------------------------------------------------------------
RUN dotnet restore "TestWebApp/TestWebApp.csproj"
RUN dotnet build "TestWebApp/TestWebApp.csproj" -c Release
RUN dotnet test --no-build -c Release --results-directory /testresults --logger "trx;LogFileName=test_result.xml" TestWebApp/TestWebApp.csproj
# ------------------WEB APP-------------------------------------------------------------
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
COPY --from=test /testresults .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
如果我像下面的 dockerfile 一样尝试它,我会收到此错误:
------
> FROM docker.io/library/test:latest:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: failed to load cache key: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
- 如果我不应该构建一个包含业务应用程序和测试的容器 - 正确的方法是什么?
【问题讨论】: