Ubuntu20.10环境Docker构建COPY libwiringPi.so.2.52文件失败如何解决
问题根因
你的COPY指令存在语法错误,多余添加了逗号。Dockerfile的COPY指令源路径和目标路径仅需用空格分隔,不需要加逗号分割参数。你写的COPY "libwiringPi.so.2.52", "./"语句中,Docker会把末尾的逗号识别为源文件名的一部分,因此会尝试查找名称为libwiringPi.so.2.52,(末尾带逗号)的文件,自然会触发文件不存在的报错,该问题和你配置的.dockerignore无关。
解决步骤
- 修正COPY语句的语法错误,删除多余的逗号:
如果你要保留COPY在base阶段,修改为:
COPY "libwiringPi.so.2.52" "./"
- 建议调整COPY的位置,避免文件被覆盖
你当前把.so文件复制到base阶段的/app目录,后续final阶段会执行COPY --from=publish /app/publish .操作,如果publish产物中没有该.so文件,不会出现覆盖问题,但更稳妥的方式是把.so的复制操作放到final阶段,保证和dll文件同目录:
FROM base AS final WORKDIR /app COPY --from=publish /app/publish . # 新增此行,放在publish复制之后,避免被覆盖 COPY "libwiringPi.so.2.52" "./" ENTRYPOINT ["dotnet", "RPI_GPIO_Tests.dll"]
调整后记得删除原来base阶段的错误COPY语句,避免重复操作。
验证
修改完成后重新执行docker build命令,只要libwiringPi.so.2.52确实存放在Dockerfile所在的构建上下文根目录,即可正常完成构建。
内容的提问来源于stack exchange,提问作者Maciek
相关产品推荐
相关产品推荐

