尝试按照教程找到了here,但遇到了问题。
我从我的项目目录中运行以下命令:
docker build -t my.solution .
我得到了以下信息:
Sending build context to Docker daemon 111.6kB
Step 1/17 : FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
---> ccfb41c8f5b5
Step 2/17 : WORKDIR /app
---> Using cache
---> e29a68e16001
Step 3/17 : EXPOSE 80
---> Using cache
---> 976388139964
Step 4/17 : FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
---> d7ab4e860769
Step 5/17 : WORKDIR /src
---> Using cache
---> 4ab01220723e
Step 6/17 : COPY my.solution.sln ./
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder564035917\my.solution.sln: The system cannot find the file specified.
我不知道它为什么要在它要查找的位置找到文件。有谁可以帮我?是否需要进行配置设置?我的Docker文件如下所示:
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
COPY my.solution.sln ./
COPY my.solution/my.solution.csproj my.solution/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/my.solution
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "my.solution.dll"]
更新
根据@AlexGera的回答,我尝试将docker文件更改为:
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
VOLUME C:/tmp
COPY my.solution.sln c:/tmp/
COPY my.solution/my.solution.csproj my.solution/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/my.solution
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "my.solution.dll"]
但是错误消息并没有明显的改变:
docker build -t my.solution .
Sending build context to Docker daemon 111.6kB
Step 1/18 : FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
---> ccfb41c8f5b5
Step 2/18 : WORKDIR /app
---> Using cache
---> e29a68e16001
Step 3/18 : EXPOSE 80
---> Using cache
---> 976388139964
Step 4/18 : FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
---> d7ab4e860769
Step 5/18 : WORKDIR /src
Removing intermediate container 31e30e2346aa
---> 61c7df20f3c4
Step 6/18 : VOLUME C:/tmp
---> Running in fada6c728151
Removing intermediate container fada6c728151
---> 7a650440cc1f
Step 7/18 : COPY my.solution.sln c:/tmp/
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder832533802\my.solution.sln: The system cannot find the file specified.
发布于 2018-10-05 02:05:46
在我看来,新解决方案附带的标准Dockerfile出现了bugged :/
我将folder文件从PowerShell上移到解决方案文件夹:
mv Dockerfile ../Dockerfile
从那里运行docker build命令为我完成了这个任务……
发布于 2018-05-31 19:42:25
复制命令将从生成上下文或以前的生成阶段(如果指定了阶段)复制文件。使用build命令:
docker build -t my.solution .
上下文是.
,它首先被发送到docker引擎,docker引擎将其放在一个临时位置,仅用于构建。
因此,使用您的copy命令:
Step 6/17 : COPY my.solution.sln ./
文件my.solution.sln
需要存在于运行构建命令的文件夹中。
对于目标,文件将被复制到容器内的工作目录,或者在您的示例中为/src
。
发布于 2019-05-16 19:15:41
这可能是由于您的DockerFile旁边的.dockerignore文件忽略了除/obj/*之外的所有内容。一旦您将其复制到另一个文件夹,您就没有复制.dockerignore文件,因此没有任何东西被排除,它可以正常工作。
https://stackoverflow.com/questions/49512727
复制相似问题