.NET項目部署到Docker容器


1、修改端口

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

2、添加Dockerfile文件

image-20211209210944787

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、根據自身情況選擇發布位置,這里以文件夾為例

image-20211209212054268

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

image-20211209212243557

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

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

image-20211209212435835

7、將發布文件Copy到系統中的指定目錄(也可以在VS發布時選擇FTP一步到位)

image-20211210111221190

8、安裝docker

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

image-20211210112534208

9、構建鏡像

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

wetodo/api:1.0 這一段表示 鏡像名稱:Tag

第一次構建可能會有點慢

image-20211210112032941

10、創建並啟動鏡像

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

image-20211210112145158

11、查看運行中的鏡像

docker ps -a

image-20211210112202132

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

如果是雲服務器,還得在服務器面板上開放一下端口

image-20211210161157871

13、起飛

訪問項目

image-20211210161242845


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM