我的環境:win10 + visual studio 2019 + Docker for Windows
1.安裝Docker,參照https://www.runoob.com/docker/windows-docker-install.html。
2.使用vs新建一個asp net core web api項目,起名demoapi,可以不勾選啓用docker支持。
3.項目點擊右鍵,選擇添加docker支持,系統會爲我們自動生成dockerfile。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["demoapi/demoapi.csproj", "demoapi/"]
RUN dotnet restore "demoapi/demoapi.csproj"
COPY . .
WORKDIR "/src/demoapi"
RUN dotnet build "demoapi.csproj" -c -o /app/build
FROM build AS publish
RUN dotnet publish "demoapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "demoapi.dll"]
這個文件使用了兩個鏡像,其中mcr.microsoft.com/dotnet/core/sdk:3.1-buster是用來還原程序,編譯應用的。mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim則是真正的.net core 的運行時。如果是linux環境,可以直接將程序上傳到linux,直接執行docker的build即可。因爲本機已經安裝了sdk,所以可以省去sdk鏡像下載的時間,修改一下dockerfile,通過手動編譯,然後用docker直接打包鏡像。
#引入鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#設定工作目錄
WORKDIR /app
#在容器中程序使用的端口,一定要和程序啓動使用的端口對應上
EXPOSE 80
#複製文件到工作目錄
COPY . .
#啓動程序
ENTRYPOINT ["dotnet", "demoapi.dll"]
然後設置dockerfile複製到發佈的目錄。
4.設置發佈
右鍵項目,選擇發佈
選擇文件夾發佈,然後點擊創建配置文件。
點擊發布按鈕
發佈成功
5.docker打包鏡像
打開命令提示符,轉到發佈目錄下。
執行以下命令
docker build -t demoapi:v1 .
期間會從dockerhub上拉取基礎鏡像,等待一下即可。
使用images命令查看生成的鏡像,第一個就是剛纔生成的
創建容器,設定端口映射,指定鏡像。
docker run -p 9000:80 demoapi:v1
然後使用瀏覽器訪問9000端口
成功訪問
用docker ps查看一下容器