這個問題應該很簡單。關於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"]
測試的東西出來,我運行一個泊塢窗命令,所以......
所以我難過的是這個;我假設ENTRYPOINT定義中的「dotnet」命令運行.Net Core SDK。
如果此Linux代理上的容器沒有安裝SDK,或者所安裝的SDK是您嘗試使用的SDK的較舊版本,那麼您如何將此代碼移植到Docker構建中?本質上,ENTRYPOINT中的「dotnet」命令是指不存在的程序?
我是否應該用容器打包SDK?如果是這樣,該行應讀取入口點[「./dotnet」,「運行」],因爲它在Linux上?如果是這樣,我還需要執行哪些其他步驟來打包SDK?
我的假設是,SDK已經打包在Microsoft/aspnetcore:1.1的容器中了嗎?如果是這樣,有沒有辦法在ENTRYPOINT定義中引用打包的可執行文件?
任何有識之士將不勝感激!
不錯!工作過,非常感謝你。如此多的新信息讓我錯過了這個細節。發誓我認爲微軟/ aspnetcore有這一切......我錯了;-) –
你可以使用該圖像,但你必須在主機上編譯你的應用程序,然後在容器中運行「dotnet ./path/to/ yourapp.dll「 現在你正在支付在啓動時編譯的成本,這是可以避免的。 – TerribleDev