docker 部署.net core 3.1程序


docker 部署.net core 3.1程序


 

  公司部署網站一般是需要三台服務器,數據庫服務器,應用服務器以及一台通訊服務器(環保行業需要穩定的數據接收服務,並進行入庫),這種部署方式無疑給銷售帶來了麻煩,別人家都是1台服務器就夠了,而我們卻需要三台服務器,不占優勢,並且,如果小木較小,也神請三台服務器很容易造成浪費,所以領導決定使用docker來做程序的部署,對程序進行隔離,小項目一台服務器搞定,並且所有項目都開始遷移到雲上,這也是為什么上docker的背景了。

docker安裝

安裝所需的軟件包,yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

使用命令來設置docker倉庫(阿里源,官方源太慢了)

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安裝docker

sudo yum install docker-ce docker-ce-cli containerd.io

啟動docker並設置開機啟動

啟動docker

sudo systemctl start docker

設置開機啟動

sudo systemctl enable docker

設置鏡像加速器

登錄阿里雲控制台,並搜索 容器鏡像服務 並選擇鏡像加速器

 

 

按照步驟設置鏡像加速器

docker使用

接下來就是使用docker部署我們的程序了,在我們的程序中添加Dockerfile

 

 

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/core/aspnet:3.1 AS base
#修復調用System.Drawing生成圖片時確少 libgdiplus 的問題
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list 
RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
WORKDIR /app
EXPOSE 5004
COPY . .
ENTRYPOINT ["dotnet", "TyFrame.WebApi.dll"]

FROM定制的鏡像都是基於 FROM 的鏡像,這里的asp.net core:3.1就是定制需要的基礎鏡像。后續的操作都是基於asp.net core:3.1。

RUN:用於執行后面跟着的命令行命令。這里是因為基礎鏡像中確少依賴 libgdiplus 需要安裝否則無法生成驗證碼。

WORKDIR 工作目錄。

EXPOSE 聲明端口,幫助鏡像使用者理解這個鏡像服務的守護端口,以方便配置映射,在運行時使用隨機端口映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的端口。

CPOY 復制指令,從上下文目錄中復制文件或者目錄到容器里指定路徑,COPY . . 意思是將本機的當前目錄拷貝到容器中的工作目錄中。

ENTRYPOINT 類似於 CMD 指令,但其不會被 docker run 的命令行參數指定的指令所覆蓋,而且這些命令行參數會被當作參數送給 ENTRYPOINT 指令指定的程序。

將編譯好的發布文件復制到安裝好docker的機器上,進入該目錄執行如下命令進行構建鏡像:

sudo docker build -t tyframeapi .

-t鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。

如需要了解更多參數,https://docs.docker.com/engine/reference/commandline/build/

現在可以通過如下命令查看鏡像列表:

 

 

 使用構建好的鏡像啟動容器

sudo docker run  --name tyframeapi -v /etc/localtime:/etc/localtime:ro -d -p 5001:5001  tyframeapi

--name為容器指定一個名稱

-v掛載一個卷,-v /etc/localtime:/etc/localtime:ro 掛載本機的/etc/localtime到容器內的/etc/localtime :ro readonly

-d后台運行容器,並返回容器ID

-p指定端口映射,格式為:主機(宿主)端口:容器端口

tyframeapi指定容器裝載的鏡像

如需要了解更多參數,https://docs.docker.com/engine/reference/commandline/run/

通過docker ps –a查看容器運行情況

 

 

 看到STATUS 為UP狀態訪問該服務器的5001端口,網站可以正常訪問,docker的安裝和部署就完整完成了,由於很少使用Linux並且公司其他人使用的也不多,所以就采用了Jenkins來做持續集成。

 


免責聲明!

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



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