asp.net core中DockerFile文件中的COPY


今天在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修改為-/即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM