AspNetCoreapi 使用 Docker + Centos 7部署
好久沒有更新文章了,前段時間寫了一系列的文章放到桌面了,想著修修改改,後來系統中勒索病毒了還被公司網路安全的抓到是我電腦,後來裝系統文章給裝丟了。然後好長一段時間沒有寫了。
今天記錄一下AspNetCore 部署Docker+Centos 7 這裡說明一下:Docker 需要用Centos7版本的作業系統
這裡模擬演示的是實戰環境的部署,專案就是使用的實戰中的專案
1:安裝前準備
首先確保我們有一臺Linux 伺服器或者系統或者虛擬機器,我使用的是虛擬機器系統做的Centos 7的版本。然後確保網路是通的,最好能聯通外網,因為我們在部署的過程須有很多的東西需要下載:
部署中使用的工具:secureCRT:連結Linux終端的伺服器,
:XFTP5 :上傳發布的檔案
2:安裝Docker 步驟如下:
使用:secureCRT連結上Linux 如下:
Docker的官方文件: ofollow,noindex">https://docs.docker.com/
Docker 分為社群版CE和企業版EE,CE是免費提供給開發者和小團體使用,企業版的是收費的,我這裡選擇使用的是社群版的。
步驟:如下
1.開始安裝:首先執行命令安裝所需的包:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
2.設定穩定的儲存庫:sudo yum-config-manager
\ --add-repo
\
https://download.docker.com/linux/centos/docker-ce.repo
3.安裝:sudo yum install docker-ce
4.啟動:sudo systemctl start docker
5.驗證是否成功: sudo docker version
6.安裝結果:
這裡是官方安裝過程: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
3:AspNetCore 映象的選擇與拉取
選擇下載映象前我們首先需要確定的是我們專案將要或者已經使用的是什麼版本的專案框架,我們專案使用的是2.1;
在下載映象的時候我們可以事先給下載好映象,也可以使用 Dockerfile 檔案進行下載:
如果我們需要在Docker 容器中進行編譯打包執行等操作的時候我們就需要安裝完整的SDK了, 如果我們只是單純的執行的話只需要安裝執行時 aspnetcore-runtime就行:官方文件中也有明確的說明:
拉取映象有兩種方式如下:
1.使用命令拉取映象: docker pull microsoft/dotnet:2.1-sdk
檢視結果:docker images
2.使用Dockerfile 檔案拉取
新建新建檔案去掉字尾名命名為:Dockerfile 編輯檔案內容如下:請注意FROM 節點上也是咱們將要使用的映象:下圖箭頭指向部分
切換到Dockerfile 檔案所在的目錄下 執行命令 建立一個映象
檢視結果:
這裡有兩個映象 名為ESD映象就是咱們的專案執行映象了,但是我們沒有準備任何將要執行的專案,所以此映象是失敗的,我們執行這一步證明了Docker 可以直接拉取專案執行的映象。
執行命令對它進行刪除: docker rmi esd (可以使用映象的名稱或者映象的 ID進行刪除)
4:專案的部署:
首先在進行部署前我建議大家先看認真看一邊官方有關Docker的網路配置
https://docs.docker.com/network/
一個新的專案如果不對專案的IP或埠進行任何改變的話 部署成功後預設監聽的是80 埠,如下圖所示:
如果你不進行改變的話也就是說這個專案部署是就使用80埠了,在建立容器的時候重新指定的埠就訪問不通了。
所以我首先改動了專案中的專案執行時監聽的埠在專案檔案Program新增程式碼如下:
.UseKestrel().UseUrls("http://*:8091") // 在所有網路介面上監聽埠 8091
改好後進行釋出:釋出完成後上傳到伺服器Dockerfire 檔案所在的目錄中
對Dockerfire 進行修改
# 表示當前建立的映象所依賴的基礎映象 FROM microsoft/dotnet:2.1-sdk # 表示當前容器的工作目錄 將要執行的web程式放在容器中的那個目錄下,沒有會自動建立 WORKDIR /app # 設定對外暴露的埠,不設定預設為 80 EXPOSE8091 # 表示會把當前目錄下的Web程式檔案 拷貝到 容器的 /app 檔案下, COPY. . # 將要執行的命令 CMD ["dotnet", "lenovo.core.ESDDB.WebApi.dll"]
使用命令執行該Dockerfire 檔案建立容器
命令: docker build -t esdapi.
這個命令需要注意的是 映象名稱 不要使用大寫 映象名稱後的 “點”不要忽略了
建立容器:
命令:docker run --name esdapi -d -p 8091:8091 esdapi
結果如圖所示:
檢視結果:docker ps
這裡注意的是在檢視結果的時候如果沒有容器在執行則使用 docker ps -a 命令檢視容器找到容器的ID 使用 docker logs +容器ID 檢視容器日誌資訊找原因。
外部訪問部署結果:
大家對直接 考軟考高階,以及PMP 證書感興趣的話 可以加群 815186020 目前機構正在搞活動優惠很多,說 “樂途” 介紹的應該會有優惠
有不足之處 希望大家指出相互學習,
本文 原創: 轉載請註明出處 謝謝!