今天在ubuntu系统中使用docker部署asp.net core时遇到了一个问题,docker build 的时候总会在最后一步提示
lstat obj/Docker/publish: no such file or directory。
并且执行docker images查看镜像的时候发现生成的镜像的REPOSITORY和TAG都是<none>。
当执行docker run的时候提示
Unable to find image ‘crm:latest‘ locally
联想到build的时候最后一步提示的obj/Docker/publish就猜想应该是这块出现的问题。查看DockerFile,内容如下
FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE 80 COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "crm.dll"]
因为这个文件时vs2017自动生成的,所以平时也没注意,这里边有个COPY,里边的内容跟报错的一样,查了之后才知道当从Dockerfile 中 build Docker 镜像时候,可以选择两种指令来添加本地的目录或者文件到你的镜像中:ADD和COPY。这两种指令格式基本相同并且基本是同样的东西
ADD <src>... <dest> COPY <src>... <dest>
在这两种情况中,目录或者文件(<src>)被复制并添加到容器的文件系统中的指定路径(<dest>)
COPY不支持URL,也不会特别对待压缩文件。如果build 上下文件中没有指定解压的话,那么就不会自动解压,只会复制压缩文件到容器中。
因为我build的时候就是在包含Dockerfile文件的目录中,只需要将文件中-obj/Docker/publish修改为-/即可
原文地址:https://www.cnblogs.com/liemei/p/8143823.html
时间: 2024-10-28 12:53:24