Jer*_*acs 7 docker .net-core dockerfile
试着按照这里的教程,但遇到问题.
我从我的项目目录运行以下命令:
docker build -t my.solution .
Run Code Online (Sandbox Code Playgroud)
......我得到以下内容:
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.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它试图在它正在寻找它的位置找到该文件.谁能帮我?我需要进行配置设置吗?我的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"]
Run Code Online (Sandbox Code Playgroud)
UPDATE
根据@ 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"]
Run Code Online (Sandbox Code Playgroud)
...但错误消息没有显着变化:
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.
Run Code Online (Sandbox Code Playgroud)
小智 22
在我看来,新解决方案附带的标准Dockerfile有问题:/
我将Dockerfile从PowerShell移到了解决方案文件夹:
mv Dockerfile ../Dockerfile
Run Code Online (Sandbox Code Playgroud)
从那里运行docker build命令对我来说是个窍门......
COPY 命令将从构建上下文或先前的构建阶段(如果您指定阶段)复制文件。使用您的构建命令:
docker build -t my.solution .
Run Code Online (Sandbox Code Playgroud)
上下文.首先发送到 docker 引擎,该引擎将其放置在一个临时位置,仅供构建使用。
因此,使用您的复制命令:
Step 6/17 : COPY my.solution.sln ./
Run Code Online (Sandbox Code Playgroud)
该文件my.solution.sln需要存在于运行构建命令的文件夹中。
对于目的地,文件将被复制到容器内的工作目录中,或者/src在您的示例中。
小智 5
这可能是由 DockerFile 旁边的 .dockerignore 文件引起的,忽略了除 /obj/* 之外的所有内容。一旦你将它复制到另一个文件夹,你就没有复制 .dockerignore 文件,所以没有排除任何东西并且它起作用了。
| 归档时间: |
|
| 查看次数: |
5962 次 |
| 最近记录: |