1. 程式人生 > 其它 >.NET專案部署到Docker容器

.NET專案部署到Docker容器

1、修改埠

public static IWebHostBuilder CreateHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseUrls("http://*:8080", "http://*:80")
            .UseStartup<Startup>();

2、新增Dockerfile檔案

3、VS根據專案自動生成了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/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 8080

FROM base AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WeTodo.API.dll"]

注意EXPOSE 後面的埠號要與Program中CreateHostBuilder方法設定的儲存一致

Tips:該方式構建容器可能體積會比較大,建議分段構建

FROM mcr.microsoft.com/dotnet/aspnet:$version AS base
WORKDIR /app
EXPOSE 5000
ENV ASPNETCORE_URLS=http://+:5000
ENV TZ=Asia/Shanghai

FROM mcr.microsoft.com/dotnet/sdk:$version AS publish
WORKDIR /src
COPY ./ ./
RUN dotnet publish $project -c Release -o /app

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

4、根據自身情況選擇釋出位置,這裡以資料夾為例

5、點選顯示所有設定進行一些配置

Tips:該專案使用的SQLite資料庫,所以不需要安裝另外的資料庫環境,如果是Mysql等,需要額外在伺服器裝一下,可以參考https://luchong.gitbook.io/note/bu-shu-xiang-mu-dao-docker

6、點擊發布,等待VS編譯完成

7、將釋出檔案Copy到系統中的指定目錄(也可以在VS釋出時選擇FTP一步到位)

8、安裝docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

9、構建映象

docker build -t wetodo/api:1.0 --rm .

wetodo/api:1.0 這一段表示 映象名稱:Tag

第一次構建可能會有點慢

10、建立並啟動映象

docker run -itd -d -p 8080:80 wetodo/api:1.0

11、檢視執行中的映象

docker ps -a

docker常用命令:

docker stop 容器id
 
docker start 容器id
 
docker restart 容器id

#刪除images,通過image的id來指定刪除誰
docker rmi <image id>

12、開放埠

關閉系統防火牆

//檢視防火牆狀態
systemctl status firewalld

//開啟防火牆
systemctl start firewalld

//關閉防火牆
systemctl stop firewalld

如果是雲伺服器,還得在伺服器面板上開放一下埠

13、起飛

訪問專案