Asp.netCore3.0 Docker 阿里雲 部署 Demo

ps:剛剛學習Docker和K8s,記錄自己遇到的坑以供分享

環境

  • Centos7.7
  • Docker 19.03.5
  • dotnetCore 3.0

開始

創建工程

新建一個asp.netAPI項目,啓用Docker(主要是想少些一點Dockerfile)
在這裏插入圖片描述
在這裏插入圖片描述

修改appsetting.json文件

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  //這裏配置服務端口
  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://0.0.0.0:5000" //端口
      }
    }
  },
  "AllowedHosts": "*"
}

修改Dockerfile

註釋內容爲生成的內容,上面的我修改之後的內容,主要就是修改幾個目錄
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base 
WORKDIR /app
EXPOSE 80
EXPOSE 5000
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["./MyHelloWorld.csproj", "./"]
RUN dotnet restore "./MyHelloWorld.csproj"
COPY . .
WORKDIR /src
RUN dotnet build "MyHelloWorld.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyHelloWorld.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyHelloWorld.dll"]

##See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443
#
#FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
#WORKDIR /src
#COPY ["MyHelloWorld/MyHelloWorld.csproj", "MyHelloWorld/"]
#RUN dotnet restore "MyHelloWorld/MyHelloWorld.csproj"
#COPY . .
#WORKDIR "/src/MyHelloWorld"
#RUN dotnet build "MyHelloWorld.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "MyHelloWorld.csproj" -c Release -o /app/publish
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
#ENTRYPOINT ["dotnet", "MyHelloWorld.dll"]

上傳源碼

這裏需要說一下,我採用的是上傳源碼到linxu,然後在linux中編譯生成docker鏡像,
當然也可以在本地編譯後到linxu中生成鏡像或者是直接在windows上生成鏡像上傳到倉庫後在linux上獲取運行。

上傳後運行命令生成鏡像
docker build -t myhelloworld .
注意:1命令最後一個 . 2名稱必須全小寫
出現如下命令表示成功

[root@ly aspnet]# sudo docker build -t myhelloworld .
Sending build context to Docker daemon  24.06kB
Step 1/18 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
 ---> 56b2d9c3874c
Step 2/18 : WORKDIR /app
 ---> Using cache
 ---> 6bac62daaefa
Step 3/18 : EXPOSE 80
 ---> Using cache
 ---> 095721768930
Step 4/18 : EXPOSE 5003
 ---> Running in 8bc96d6a2a46
Removing intermediate container 8bc96d6a2a46
 ---> 55b29d07026d
Step 5/18 : EXPOSE 443
 ---> Running in a7182238404a
Removing intermediate container a7182238404a
 ---> b77265a9f8cd
Step 6/18 : FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
 ---> ca45dd244135
Step 7/18 : WORKDIR /src
 ---> Using cache
 ---> 757d62c50914
Step 8/18 : COPY ["./MyHelloWorld.csproj", "./"]
 ---> Using cache
 ---> 60535b1636ab
Step 9/18 : RUN dotnet restore "./MyHelloWorld.csproj"
 ---> Using cache
 ---> 3052da84ab90
Step 10/18 : COPY . .
 ---> 670a7280dca2
Step 11/18 : WORKDIR /src
 ---> Running in 8a52710d72ad
Removing intermediate container 8a52710d72ad
 ---> 48c338d48ab0
Step 12/18 : RUN dotnet build "MyHelloWorld.csproj" -c Release -o /app/build
 ---> Running in 7752db8f1777
Microsoft (R) Build Engine version 16.3.2+e481bbf88 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 25.57 ms for /src/MyHelloWorld.csproj.
  MyHelloWorld -> /app/build/MyHelloWorld.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:04.38
Removing intermediate container 7752db8f1777
 ---> 4610cc6750f2
Step 13/18 : FROM build AS publish
 ---> 4610cc6750f2
Step 14/18 : RUN dotnet publish "MyHelloWorld.csproj" -c Release -o /app/publish
 ---> Running in 29be737f5792
Microsoft (R) Build Engine version 16.3.2+e481bbf88 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 38.27 ms for /src/MyHelloWorld.csproj.
  MyHelloWorld -> /src/bin/Release/netcoreapp3.0/MyHelloWorld.dll
  MyHelloWorld -> /app/publish/
Removing intermediate container 29be737f5792
 ---> 872704084867
Step 15/18 : FROM base AS final
 ---> b77265a9f8cd
Step 16/18 : WORKDIR /app
 ---> Running in 2315caf7cbb8
Removing intermediate container 2315caf7cbb8
 ---> 7d888b5868ee
Step 17/18 : COPY --from=publish /app/publish .
 ---> a607be58dc10
Step 18/18 : ENTRYPOINT ["dotnet", "MyHelloWorld.dll"]
 ---> Running in 41f5ea65e2c4
Removing intermediate container 41f5ea65e2c4
 ---> 18eaacf21e9a
Successfully built 18eaacf21e9a
Successfully tagged myhelloworld:latest

  • dockerfile文件目錄不正確會出現各種找不到文件的錯誤,注意修改路徑
  • docker版本坑,一定要用17.0 以上的版本

運行容器

sudo docker run --name myhelloworld -p 80:5000 myhelloworld:latest
80:外部端口
5000 內部端口

效果

在這裏插入圖片描述
我發佈到自己的阿里雲服務器了,所以有外網地址,如果沒用就用內網地址測試。

Docker安裝引導地址
網友力量

發佈了53 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章