3

我是 Docker 新手,在运行 Docker 文件时

我的 Docker 文件

FROM microsoft/dotnet:2.2.0-preview1-aspnetcore-runtime AS base 
WORKDIR /app

FROM microsoft/dotnet:2.2.100-preview1-sdk AS build
WORKDIR /DineshVisualStudio/Autofac-interceptor/AutofacModule/Autofac.interface.ConcactFactory
COPY Autofac.Interface.ConcatFactory.csproj project/
WORKDIR /Autofac-interceptor/project
RUN dotnet restore
COPY /Autofac.interface.Concactfactory .
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 ["Autofac.Interface.ConcatFactory.exe"]

运行docker build -t myappfactory .时失败。我在 COPY 命令中尝试了许多路径组合,但没有任何运气。

我正在使用 Visual Studio 2017 并且也安装了 Docker 工具

这是我的文件夹结构 我的文件夹结构,其中包含 docker 文件的代码

运行时docker build -t autofacinterface .我收到一条错误消息:

failed to create file . System cannot find the file specified.

我正在使用 Cmd 从当前工作的 .csproj 文件夹构建 docker。

D:\DineshVisualStudio\Autofac-Interceptor\AutofacModule\Autofac.Interface.ConcatFactory>docker build -t autofacinterfaceconcatfactory .
Sending build context to Docker daemon  4.608kB
Step 1/15 : FROM microsoft/dotnet:2.2.0-preview1-aspnetcore-runtime AS base
---> 2df5940c47f7
Step 2/15 : WORKDIR /app
---> Using cache
---> f4d2190d9b44
Step 3/15 : FROM microsoft/dotnet:2.2.100-preview1-sdk AS build
---> af242cb10bf0
Step 4/15 : WORKDIR /DineshVisualStudio/Autofac- 
interceptor/AutofacModule/Autofac.interface.ConcactFactory
---> Using cache
---> dbf15787395b
Step 5/15 : COPY /Autofac.Interface.ConcatFactory.csproj project/
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker- 
builder138146052\COPY: The system cannot find the file specified.

在@Mike 建议后,我遇到了这个问题:

D:\DineshVisualStudio\Autofac-Interceptor\AutofacModule\Autofac.Interface.ConcatFactory>docker build -t myappfact .
Step 6/15 : WORKDIR /Autofac-interceptor/project
Step 7/15 : RUN dotnet restore
---> Running in 9e91df3e68a3
MSBUILD : error MSB1003: Specify a project or solution file. The current 
working directory does not contain a project or solution file.
The command 'cmd /S /C dotnet restore' returned a non-zero code: 1
4

3 回答 3

3

我认为您不需要/引入COPY /Autofac.Interface.ConcatFactory.csproj. 源文件是相对于当前工作目录的,并且您之前已经调用WORKDIR过。

https://docs.docker.com/engine/reference/builder/#copy

于 2018-09-11T17:03:41.640 回答
0
Step 5/15 : COPY COPY

COPY你的 Dockerfile 中是否连续两次出现这个词?

于 2018-09-11T16:45:53.203 回答
0

命令“ COPY /Autofac.Interface.ConcatFactory.csproj project/ ”失败。我建议您在此处阅读有关命令 COPY 的更多信息。如果您从文件夹“D:\DineshVisualStudio\Autofac-Interceptor\AutofacModule\Autofac.Interface.ConcatFactory”运行 docker build ,请使用命令“ COPY ..”。

于 2020-03-19T13:37:22.287 回答