【问题标题】:How to point correct path in the Dockerfile如何在 Dockerfile 中指向正确的路径
【发布时间】:2019-07-29 15:00:12
【问题描述】:

我在本地硬盘驱动器的不同位置有 .sln 文件和 Dockerfile。

到目前为止,我一直在处理 .sln 文件和 Dockerfile 位于同一位置的源代码。

我很难正确配置它。

  • 我在CompanyCarsDocker\CompanyCarsDocker\CompanyCarsDocker.sln 位置有.sln 文件
  • 我的 Dockerfile 存在于 CompanyCarsDocker\CompanyCarsDocker\CarApi\Dockerfile
  • -

下面是我的 Dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 54411

FROM microsoft/aspnetcore-build:2.0 AS builder
WORKDIR /src
COPY . ./*.sln ./
ADD ./site /inetpub/wwwroot
COPY ./CarApi.csproj CarApi/
RUN dotnet restore
COPY . .
WORKDIR /src/CarApi
RUN dotnet build -c Release -o /app

FROM builder AS publish
RUN dotnet publish -c  Release -o /app

FROM base AS production
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "CarApi.dll"]

我添加了ADD ./site /inetpub/wwwroot 用于测试目的。我得到了

ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder782713904\site: The system cannot find the file specified.

同样的错误我也遇到COPY ./CarApi.csproj CarApi/

如果我在 Dockerfile 中配置了错误,请告诉我。

【问题讨论】:

    标签: docker docker-compose dockerfile docker-machine


    【解决方案1】:

    你可以使用docker build的-f标志来指定Dockerfile的路径

    确保您当前的工作目录是包含 sln 文件和项目其余部分的目录。运行命令docker build -f <path to Dockerfile> .

    【讨论】:

    • 我需要在COPY *.sln ./ 处提供Dockerfile 中的路径。在这个位置我收到COPY failed: no source files were specified
    • 我已更改为 COPY . ./*.sln ./ 并且有效
    • 据我所知,这应该可行。您是否确保将包含 sln 文件的目录保留为工作目录?
    • @E_FreeLancer 你不是说“COPY ./*.sln ./”吗?我认为您添加了一个额外的“。”
    • COPY ./*.sln ./ 无法工作,因为 CompanyCarsDocker 中存在 .sln 文件,而 *CompanyCarsDocker\CarApi* 中存在 Dockerfile
    【解决方案2】:

    你的 .sln 文件是两个目录,所以你应该使用

    COPY ../../*.sln ./
    

    而不是

    COPY . ./*.sln ./
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多