?
This document uses PHP Chinese website manual Release
這個(gè)例子演示了如何 dockerize 一個(gè) ASP.NET Core 應(yīng)用程序。
開源
在 Windows,MacOS和Linux 上開發(fā)并運(yùn)行跨平臺(tái)的 ASP.NET Core 應(yīng)用程序
非常適合現(xiàn)代基于云的應(yīng)用程序,如 Web 應(yīng)用程序,IoT 應(yīng)用程序和移動(dòng)后端
ASP.NET Core 應(yīng)用程序可以在 .NET Core 或完整的 .NET Framework上運(yùn)行
旨在為部署到云或內(nèi)部部署的應(yīng)用程序提供優(yōu)化的開發(fā)框架
具有最小開銷的模塊化組件在構(gòu)建解決方案時(shí)保持靈活性
此示例假定您的計(jì)算機(jī)上已經(jīng)有一個(gè) ASP.NET Core應(yīng)用程序。如果您不熟悉 ASP.NET,則可以按照簡單教程初始化項(xiàng)目或克隆ASP.NET Docker示例。
在你的項(xiàng)目文件夾中創(chuàng)建一個(gè)Dockerfile
。
將以下文本添加到您的Dockerfile
的 Linux 或 Windows Containers 中。下面的標(biāo)簽是多拱形的,意思是它們將取決于 Windows 或 Dock 的容器,具體取決于在 Docker for Windows 中設(shè)置的模式。了解更多關(guān)于交換容器。
Dockerfile
假定您的應(yīng)用程序叫做aspnetapp
。更改Dockerfile
為使用項(xiàng)目的 DLL 文件。
FROM microsoft/aspnetcore-build:2.0 AS build-env WORKDIR /app # Copy csproj and restore as distinct layers COPY *.csproj ./RUN dotnet restore # Copy everything else and build COPY . ./RUN dotnet publish -c Release -o out # Build runtime image FROM microsoft/aspnetcore:2.0WORKDIR /app COPY --from=build-env /app/out .ENTRYPOINT ["dotnet", "aspnetapp.dll"]
為使您的構(gòu)建環(huán)境盡可能小,請將.dockerignore
文件添加到項(xiàng)目文件夾并將以下內(nèi)容復(fù)制到其中。
bin\ obj\
在命令提示符下導(dǎo)航到您的項(xiàng)目文件夾。
使用以下命令來構(gòu)建和運(yùn)行 Docker 鏡像:
$ docker build -t aspnetapp .$ docker run -d -p 8080:80 --name myapp aspnetapp
轉(zhuǎn)到 localhost:8080以在 Web 瀏覽器中訪問您的應(yīng)用程序。
如果您使用的是 Nano Windows容器 并且沒有更新到 Windows Creator Update,則會(huì)出現(xiàn)一個(gè)影響 Windows 10 如何通過“NAT”(網(wǎng)絡(luò)地址轉(zhuǎn)換)與 Containers 進(jìn)行對話的錯(cuò)誤。您必須直接點(diǎn)擊容器的 IP。您可以通過以下步驟獲取容器的IP地址:
跑 docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" myapp
復(fù)制容器的 IP 地址并粘貼到瀏覽器中。(例如172.16.240.197
)
ASP.NET Core
Microsoft ASP.NET Core on Docker Hub
ASP.NET Core with Docker Tools for Visual Studio