FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 8000
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["Crontab/Crontab.csproj", "Crontab/"]
COPY ["CrontabService/CrontabService.csproj", "CrontabService/"]
COPY ["Common/Common.csproj", "Common/"]
RUN dotnet restore "Crontab/Crontab.csproj"
COPY . .
WORKDIR "/src/Crontab"
RUN dotnet build "Crontab.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Crontab.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY *.* ./
ENTRYPOINT ["dotnet", "Crontab.dll"]
以上是我的dockerfile文件
失败原因如下
Step 7/19 : COPY ["./Crontab/Crontab.csproj", "Crontab/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder806754089/Crontab/Crontab.csproj: no such file or directory
如果放在和目录同级问题是
Step 7/19 : COPY ["Crontab/Crontab.csproj", "/src"]
COPY failed: Forbidden path outside the build context: Crontab/Crontab.csproj ()
此时我将dockerfile挪到上一个文件夹也是失败,
试试 COPY ["src/Crontab/Crontab.csproj", "Crontab/"]
WORKDIR
设置的是容器内当前工作路径
@dudu: 刚刚试过 也还是找不到当前路径
@初夏的阳光丶: 是在哪个路径运行 docker 命令的?
@dudu: 服务器的当前目录和上一级都试过
@初夏的阳光丶: Crontab.csproj
的路径要是相对于运行 docker build 命令的路径
@dudu: 理解了 刚刚本地项目路径修改了一下。可以成功了 谢谢dudu大佬 辛苦了
这种情况一般说来是因为大小写问题造成的,Windows 的文件和文件夹是大小写无关,而Linux不是。
Crontab/Crontab.csproj 看看是不是第一个字母小写了。
下一步就是项目发布的dll
下面是本地的项目路径
应该不是大小写的问题