首页 新闻 会员 周边 捐助

dockerfile 构建失败

0
悬赏园豆:20 [已解决问题] 解决于 2020-05-28 22:18
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挪到上一个文件夹也是失败,

初夏的阳光丶的主页 初夏的阳光丶 | 小虾三级 | 园豆:641
提问于:2020-05-28 21:47
< >
分享
最佳答案
0

试试 COPY ["src/Crontab/Crontab.csproj", "Crontab/"]

收获园豆:20
dudu | 高人七级 |园豆:29732 | 2020-05-28 21:54

WORKDIR 设置的是容器内当前工作路径

dudu | 园豆:29732 (高人七级) | 2020-05-28 21:55

@dudu: 刚刚试过 也还是找不到当前路径

初夏的阳光丶 | 园豆:641 (小虾三级) | 2020-05-28 21:59

@初夏的阳光丶: 是在哪个路径运行 docker 命令的?

dudu | 园豆:29732 (高人七级) | 2020-05-28 22:08

@dudu: 服务器的当前目录和上一级都试过

初夏的阳光丶 | 园豆:641 (小虾三级) | 2020-05-28 22:11

@初夏的阳光丶: Crontab.csproj 的路径要是相对于运行 docker build 命令的路径

dudu | 园豆:29732 (高人七级) | 2020-05-28 22:17

@dudu: 理解了 刚刚本地项目路径修改了一下。可以成功了 谢谢dudu大佬 辛苦了

初夏的阳光丶 | 园豆:641 (小虾三级) | 2020-05-28 22:18
其他回答(1)
0

这种情况一般说来是因为大小写问题造成的,Windows 的文件和文件夹是大小写无关,而Linux不是。
Crontab/Crontab.csproj 看看是不是第一个字母小写了。

爱编程的大叔 | 园豆:30844 (高人七级) | 2020-05-28 21:54


下一步就是项目发布的dll

下面是本地的项目路径

应该不是大小写的问题

支持(0) 反对(0) 初夏的阳光丶 | 园豆:641 (小虾三级) | 2020-05-28 21:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册