實踐一下 Asp.Net Core (基于.net core 2.2)部署到Docker
一、準備工作:
1. 使用Virtualbox創(chuàng)建一個Centos系統的虛擬機,并安裝docker和vim
2. 配置好端口(如下圖,后面需要使用)
?
3. 準備一個網站發(fā)布包(我采用的默認的Asp.Net Core
MVC),windows發(fā)布時的配置(也可以在linux上進行發(fā)布),將發(fā)布包放入linux虛擬機(我的路徑是:/root/Root/DefaultHttp/publish)
?4. 測試一下發(fā)布包是否正常(可選,需要在linux安裝.net core sdk,如果版本較低,需要使用sudo yum update命令更新)
dotnet publish/DefaultHttp.dll
如圖顯示,是正常的
5. 創(chuàng)建Dockfile文件(路徑:/root/Root/DefaultHttp/,即和publish文件夾同級),并把下面的代碼放入文件中。
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 WORKDIR /app EXPOSE 5000 #
一般情況下必須開放 EXPOSE 80 # 如果使用https,記得打開443端口,但是一般不用 #EXPOSE 443 COPY publish/ /app
ENTRYPOINT ["dotnet", "DefaultHttp.dll"]
至此,準備工作完成。
二、創(chuàng)建鏡像
1. 切換至?/root/Root/DefaultHttp/
cd Root/DefaultHttp/
2. 執(zhí)行以下命令,使用Dockerfile創(chuàng)建鏡像(鏡像名稱為:firsthttp/default)
docker build -t firsthttp/default .
3. 執(zhí)行docker images 命令查看生成的鏡像
?
三、運行容器
1. 執(zhí)行以下命令,運行容器(linux虛擬機的8010端口映射docker容器的80端口)
docker run -d -p 8010:80 -p 5000:5000 --name first firsthttp/default
2. 查看運行中的容器
docker ps
3. 查看容器日志
docker logs -f ef5d4c3870f1
為什么需要這個步驟?
查看容器運行的日志信息,防止發(fā)生錯誤,也可以知道容器開放的端口(這里是80,映射到linux虛擬機是8010端口,映射到主機也是8010端口(第一步的準備工作中有))
4. 在linux虛擬機查看結果,執(zhí)行以下命令
curl http://localhost:8010
5. 在主機訪問
至此,部署完成。
四、刪除容器和鏡像
#刪除容器 docker rm 容器ID #刪除鏡像 docker rmi firsthttp/default
五、總結:
1. Docker容器對外發(fā)布的是80端口(需要使用docker logs命令查看)
2. 執(zhí)行docker run 命令運行容器時,可以添加 -v
參數,映射指定的數據卷(這里是publish文件夾),下次更新程序時,會自動更新到docker,只需要重啟docker即可(docker restart
firsthttp/default)
?
熱門工具 換一換