[英]Asp.Net Core on Docker
我目前正在嘗試使用 ASP.NET Core 應用程序啟動 Docker 組件。
我使用以下 repo 進行測試: https : //github.com/aspnet/cli-samples
我運行以下命令沒有任何問題:
git clone https://github.com/aspnet/cli-samples aspnet-Home
cd aspnet-Home/HelloWeb
cat Dockerfile
FROM microsoft/aspnetcore
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "helloweb.dll"]
sudo docker build –t helloweb .
sudo docker run -d helloweb
使用sudo docker images
可以看到sudo docker images
,但容器不會啟動,並且使用sudo docker ps
不可見:
如果我瀏覽我的網站,顯然我看不到數據。 回購不適合我的測試嗎? 我在 docker 容器創建上有什么錯誤嗎?
你強調的錯誤是因為helloweb.dll
你設置為ENTRYPOINT
不存在。 可能有兩個原因
在這種情況下,您應該從項目主目錄運行dotnet restore
,然后導航到HelloWeb
目錄並運行dotnet publish
。 當我運行此命令時,我看到以下內容:
publish: Published to /code/HelloWeb/bin/Debug/netcoreapp1.0/publish
Published 1/1 projects successfully
ENTRYPOINT
路徑不對COPY . .
指令會將當前目錄中的所有內容復制到您的app
目錄中。 這意味着HelloWeb.dll
實際上將在bin/Debug/netcoreapp1.0/publish/
(或bin/Release/...
對於發布版本)。
選項 1:使用完整路徑修改您的入口點
ENTRYPOINT ["dotnet", "bin/Debug/netcoreapp1.0/publish/HelloWeb.dll"]
您的應用程序應該很高興地啟動並處理請求。
選項 2:修改您的COPY
指令
項目發布后,運行它所需的所有內容都將位於publish
目錄中。 您可以將其內容復制到/app
目錄中,您的入口點將是正確的。 看起來像這樣
FROM microsoft/aspnetcore
WORKDIR /app
COPY ./bin/Debug/netcoreapp1.0/publish/ .
EXPOSE 80
ENTRYPOINT ["dotnet", "HelloWeb.dll"]
您可能還想添加EXPOSE
指令來告訴 Docker 您的容器將偵聽端口 80。
成功后,您應該會看到(如果您在交互模式下運行)
docker run -it helloweb
Hosting environment: Production
Content root path: /app
Now listening on: http://+:80
Application started. Press Ctrl+C to shut down.
您也可以改用microsoft/dotnet:latest
圖像。 該映像附帶安裝了 SDK 和一個非常方便的run
命令。 Dockerfile 看起來像這樣
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app
RUN dotnet restore
ENV ASPNETCORE_URLS http://*:5000
EXPOSE 5000
ENTRYPOINT ["dotnet", "run"]
您應該能夠修改源代碼並構建和運行容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.