2017-06-13 52 views
0

這個問題應該很簡單。關於dotnet SDK和Docker容器

假設您正在嘗試運行Asp.Net Core Web Api。該應用程序將在乾淨的Linux安裝中運行Docker容器(味道並不重要)。該容器位於帶有泊塢窗工具的Kubernetes集羣中的POD內。

的Dockerfile需要針對aspnetcore特定版本,看起來是這樣的:

FROM microsoft/aspnetcore:1.1 
COPY . /app 
WORKDIR /app 
EXPOSE 5000/tcp 
ENV ASPNETCORE_URLS http://*:5000 
ENTRYPOINT ["dotnet", "run"] 

測試的東西出來,我運行一個泊塢窗命令,所以......

enter image description here

所以我難過的是這個;我假設ENTRYPOINT定義中的「dotnet」命令運行.Net Core SDK。

如果此Linux代理上的容器沒有安裝SDK,或者所安裝的SDK是您嘗試使用的SDK的較舊版本,那麼您如何將此代碼移植到Docker構建中?本質上,ENTRYPOINT中的「dotnet」命令是指不存在的程序?

我是否應該用容器打包SDK?如果是這樣,該行應讀取入口點[「./dotnet」,「運行」],因爲它在Linux上?如果是這樣,我還需要執行哪些其他步驟來打包SDK?

我的假設是,SDK已經打包在Microsoft/aspnetcore:1.1的容器中了嗎?如果是這樣,有沒有辦法在ENTRYPOINT定義中引用打包的可執行文件?

任何有識之士將不勝感激!

回答

3

如果你需要SDK,我想你想要https://hub.docker.com/r/microsoft/aspnetcore-build/

您使用的圖像只包括運行時,而不包括SDK。

+0

不錯!工作過,非常感謝你。如此多的新信息讓我錯過了這個細節。發誓我認爲微軟/ aspnetcore有這一切......我錯了;-) –

+0

你可以使用該圖像,但你必須在主機上編譯你的應用程序,然後在容器中運行「dotnet ./path/to/ yourapp.dll「 現在你正在支付在啓動時編譯的成本,這是可以避免的。 – TerribleDev