[英]ASP.NET 5: docker build with multi-projects solution
我正在嘗試創建一個由4個項目組成的ASP.NET 5解決方案的圖像。 這是結構:
我有一個簡單的Dockerfile,如下所示:
FROM microsoft/aspnet
COPY . /app
WORKDIR /app
RUN ["kpm", "restore"]
EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]
但不知道在哪里放。 在我的解決方案的根文件夾中,global.json是在我的Project.json所在的Web Application文件夾中? 當然我已根據此文件的位置對其進行了修改。
無論如何兩者似乎都有效,因為它在運行命令時下載了我需要的所有庫
docker build -t quizzcorrector。
我的問題是碼頭工人告訴我的那一刻
無法找到Models> = 1.0.0
無法找到FlashTools> = 1.0.0
無法找到QuizzService> = 1.0.0
我在這個帖子上看到https://github.com/aspnet/aspnet-docker/issues/19在多項目解決方案中我們應該運行命令“kpm pack”將我的應用打包成可部署和可運行的形式。
我找不到任何帶有kpm pack命令的Dockerfiles的例子,只有文檔: https : //github.com/aspnet/Home/wiki/Package-Manager
我當然也嘗試在我的Dockerfile中使用ADD或COPY命令將我的項目內容復制到容器的文件系統中,但仍然是同樣的錯誤。
謝謝你的幫助
更新時間:2018年2月14日
我之前的回答沒有考慮編寫Dockerfile的最佳實踐。 它也不適用於那些具有多個Web項目的解決方案,其中每個應用程序必須在單獨的Docker容器中運行。 更好的方法是在開發環境中構建和發布ASP.NET Core應用程序,並在Docker容器中運行應用程序,該容器已針對生產使用進行了優化。
將以下內容放入其中
FROM microsoft/aspnetcore COPY ./publish /publish WORKDIR /publish EXPOSE 5000/tcp ENTRYPOINT ["dotnet", "QuizzCorrector.dll"]
dotnet publish -c Release -o publish
構建和發布項目 docker build -t QuizzCorrector
構建Docker鏡像 請注意, microsoft/aspnetcore
Docker映像是僅運行時映像,它不提供.NET Core SDK,使其更輕,更適合生產使用。
可能會遲到,但我會為那些仍在努力讓它發揮作用的人回答這個問題。 您需要在解決方案級別創建Dockerfile。 然后,您需要更新您的工作文件夾以使用您的Web項目所在的文件夾。 這是在最終的Dockerfile下面,考慮到 kpm
和k
utilites被一個dotnet
工具替換。
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app/src/QuizzCorrector RUN ["dotnet", "restore"] EXPOSE 5004 ENTRYPOINT ["dotnet", "run"]
對於未來參考和任何具有相同問題的人。 微軟發布了搬運工集裝箱DOTNET架構/ eShopOnContainers項目A樣品dotnet的核心應用在這里
您可以參考鏈接或查找下面的示例
示例:
FROM microsoft/aspnetcore:2.0.3 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore -nowarn:msb3202,nu1503
WORKDIR /src/src/Services/Basket/Basket.API
RUN dotnet build --no-restore -c Release -o /app
FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Basket.API.dll"]
為了能夠使用ASP.NET CORE 1.0在DockerHub中構建和運行多個xproject,我遇到了類似的問題。 這導致我在這里幫助了我。 我的解決方案是:
解決方案結構
```
Root
│ AuthenticationService.sln
│ Dockerfile
│
└───src
│ │
│ └───AuthenticationService
│ └───DataAccess
│ └───EntityDataModels
│ └───Services
.
Dockerfile:
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app/src/AuthenticationService
RUN ["dotnet", "restore"]
WORKDIR /app/src/DataAccess
RUN ["dotnet", "restore"]
WORKDIR /app/src/EntityDataModels
RUN ["dotnet", "restore"]
WORKDIR /app/src/Services
RUN ["dotnet", "restore"]
WORKDIR /app/src/AuthenticationService
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
對於這個答案,也許不遲。
在這篇文章http://dev.widemeadows.de/2015/09/08/fun-with-asp-net-5-beta7-bliss-build-errors-dockerfiles-and-reverse-proxies/你要做的解決方案的文件,並通過引用起始項目引用所有項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.