【发布时间】:2021-06-03 23:06:48
【问题描述】:
我想从一个单元测试项目的 docker 容器中启动一个 .NET Core WebApi。这些测试将在使用 GitLab 的持续集成期间运行。
WebApi 项目使用存储在路径为 C:/Temp/nuget 包的文件夹中的本地 nuget 包。该文件夹存在于运行 GitLab 运行器的服务器上。
C:/Temp/nuget 包
C:/Users/myUser/project/MyProject 具有以下树
- sln
- MyProjectWebAPI
-- dockerfile
- MyProject.Tests
-- 链接到 MyProjectWebAPI 的 dockerfile\
我的 dockerfile 看起来像这样
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
#copying some csproj files
RUN mkdir Oncolin.DataAccess.WebAPI/nugetPackages
#VOLUME "C:/Temp/nuget packages":"Oncolin.DataAccess.WebAPI/nugetPackages" -> failed, unable to name a volume in a dockerfile so my folder is empty and the dotnet restore failed
#COPY ["C:/Temp/nuget packages", "Oncolin.DataAccess.WebAPI/nugetPackages"]-> failed, can't reach Temp folder (using ../.. and/or finished with '/' gave the same result)
#ADD["C:/Temp/nuget packages", "Oncolin.DataAccess.WebAPI/nugetPackages"]-> failed, can't reach Temp folder (using ../.. and/or finished with '/' gave the same result)
#RUN cp -r "C:/Temp/nuget packages" Oncolin.DataAccess.WebAPI/nugetPackages -> failed, can't reach Temp folder
RUN find Oncolin.DataAccess.WebAPI/nugetPackages
RUN dotnet restore "Oncolin.DataAccess.WebAPI/Oncolin.DataAccess.WebAPI.csproj" -s https://api.nuget.org/v3/index.json -s nugetPackages --verbosity n
COPY . .
WORKDIR "/src/Oncolin.DataAccess.WebAPI"
RUN dotnet build "Oncolin.DataAccess.WebAPI.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Oncolin.DataAccess.WebAPI.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Oncolin.DataAccess.WebAPI.dll"]
我必须在构建过程中复制容器中的 C:/Temp/nuget 包才能成功恢复 nuget 包。正如您在 dockerfile 中看到的那样,我尝试了几件事。
我像这样运行 docker build 命令
C:\Users\myUser\project\MyProject> docker build -t 'oncolin-webapi' --progress plain -f '.\Oncolin.DataAccess.WebAPI\Dockerfile' .
我怎样才能做到这一点? 是否可以检索卷的名称?
提前致谢
【问题讨论】:
标签: docker continuous-integration dockerfile nuget nuget-package-restore