AspNetCoreapi 使用 Docker + Centos 7部署

 

很久沒有更新文章了,前段時間寫了一系列的文章放到桌面了,想着修修改改,後來系統中勒索病毒了還被公司網絡安全的抓到是我電腦,後來裝系統文章給裝丟了。而後好長一段時間沒有寫了。linux

今天記錄一下AspNetCore 部署Docker+Centos 7 這裏說明一下:Docker 須要用Centos7版本的操做系統web

這裏模擬演示的是實戰環境的部署,項目就是使用的實戰中的項目docker

1:安裝前準備

  首先確保咱們有一臺Linux 服務器或者系統或者虛擬機,我使用的是虛擬機系統作的Centos 7的版本。而後確保網絡是通的,最好能聯通外網,由於咱們在部署的過程須有不少的東西須要下載:centos

部署中使用的工具:secureCRT:連接Linux終端的服務器,api

                            :XFTP5    :上傳發布的文件安全

2:安裝Docker 步驟以下:

  使用:secureCRT連接上Linux 以下:服務器

  

  Docker的官方文檔:https://docs.docker.com/網絡

  Docker 分爲社區版CE和企業版EE,CE是免費提供給開發者和小團體使用,企業版的是收費的,我這裏選擇使用的是社區版的。app

  步驟:以下

  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

  EXPOSE  8091

  # 表示會把當前目錄下的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 目前機構正在搞活動優惠不少,說 「樂途」 介紹的應該會有優惠

有不足之處 但願你們指出相互學習,

            本文原創:轉載請註明出處 謝謝!

相關文章
相關標籤/搜索