.Net Core部署到Docker的最簡單方式
1.准備工作
- 已經安裝好docker的系統
- 已經准備好上docker的程序
- 建議先在docer上拉取aspnet環境(docker pull mcr.microsoft.com/dotnet/aspnet)
- net 構造器環境(docker pull mcr.microsoft.com/dotnet/sdk:5.0-buster-slim)
環境
- asp.net core 5.0
- Docker version 1.13.1, build 0be3e21/1.13.1
2.Dockerfile
這是通過FTP上傳方式的Dockerfile(此種方式請先拉取aspnet環境)
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
WORKDIR /app
COPY . .
#設置端口
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Shio.Docker.dll"]
下面是通過倉庫方式的Dockerfile(此方式直接用: vs右擊項目=>添加=>docker支持)就會生成
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["Shio.Docker.csproj", ""]
RUN dotnet restore "./Shio.Docker.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Shio.Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Shio.Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Shio.Docker.dll"]
3.FTP
- 可直接參考福祿網絡研發團隊的《.NET5都來了,你還不知道怎么部署到linux?最全部署方案,總有一款適合你》 XSHELL+XFTP
- 安裝好XSHELL后,通過XFTP確定你的程序存放的位置,例如我就在root的同級目錄下創建了codepublish文件夾來存放文件,將程序文件放入其中
- 現在切換文件夾(一下我用codepublish文件夾來舉例):cd codepublish
- docker build -t Shio.Docker(此為你給這個鏡像的取名 -t就是取名的意思 后面的Shio.Docker就是你給鏡像取得名字)
- docker run -p 80:80 -p 443:443 Shio.Docker(鏡像名)(-p 后面的第一個80是系統的端口第二個是容器的端口,上面的代碼意思為:運行Shio.Docker鏡像,並將容器的80和443端口映射到系統的80和443)
4.通過拉取鏡像的方式
- 我下面以阿里雲舉例
- 你得現在自己的開發電腦上安裝Docker Desktop(win10)
- 去阿里雲啟用《容器鏡像服務》
- 在阿里雲的《容器鏡像服務》中簡歷命名空間與鏡像倉庫
- 打開vs右擊項目發布 選擇docker容器注冊表=>下一步=>其他docker容器注冊表
- 進入鏡像倉庫 點擊倉庫名稱
- vs注冊表URL(R)=阿里雲鏡像倉庫-基礎信息-公網地址
- vs用戶名(U)=你阿里雲的登錄賬號名稱
- vs密碼(P)=你開啟容器鏡像服務的密碼,如果不知道可以在阿里雲的倉庫管理=>訪問憑證=>重新設置
- 建議在本地的docker中也先安裝aspnet的運行環境與net的構造器
- 用vs點擊發布,發布失敗的幾種解決問題:
- 拉取ASPNET速度太慢,這個就是建議提前安裝或者爬梯子
- 打開cmd或者Powershell
- docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
- docker tag 鏡像的ImageId registry.cn-shenzhen.aliyuncs.com/shio/test:隨便你編一個版本號
- docker push registry.cn-shenzhen.aliyuncs.com/shio/test:你剛剛編的版本號
- 在你的服務器中拉取你的鏡像
- docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
- docker pull 倉庫地址:你剛剛編的版本號
- docker run -p 80:80 -p 443:443 Shio.Docker(鏡像名)(-p 后面的第一個80是系統的端口第二個是容器的端口,上面的代碼意思為:運行Shio.Docker鏡像,並將容器的80和443端口映射到系統的80和443)