.NET專案部署到Docker容器
阿新 • • 發佈:2021-12-10
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、起飛
訪問專案