![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103061.png)
前言
1、跨平臺第一部曲:MySql
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103062.png)
當然,不僅僅遷移過去就行了,這只是一個開頭,后期還是有很多東西,需要自己好好研究,比如快取,資料一致性,索引,存盤,鎖,佇列等等知識,只有用到了才會打開進一步專研的大門,
2、跨平臺第二部曲:Linux
我之前有篇文章已經對我的所有專案做了遷移,還是比較詳細的:
《[最全操作指南] 在線六個專案全部遷移Linux》
還是那句話,只有用了,才會去研究,螃蟹這東西,如果沒吃過,永遠不會知道是酸的還是甜的,因為這個Linux遷移基礎的比較簡單,或者說是一個長期學習的東西,所以一篇文章就搞定了,
3、剩下三部曲
說完Docker,就說一說CI/CD相關的內容,應該就是基于Docker+Jenkins的吧,
最后一部曲就是K8S一把梭了,
(PS:我的講解速度,取決于各位的素質三連的速度了??)
好啦,今天就說說Docker在netCore中的從入門到部署吧!
1、服務器與工具準備
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103063.png)
本次所用到的工具主要有:
1、git:提供源代碼管理;
2、docker:容器服務;
3、dotnetcore:SDK環境;
4、nginx:服務器代理;
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103064.png)
2、安裝輔助工具
1、更新系統 [可選]
sudo yum update預計310M,預計10~20分鐘
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103065.png)
2、安裝Git [可選]
第二種是本地發布,然后本地build,推到倉庫里,服務器拉取;
第三種就是服務器PULL代碼,然后服務器發布,再build;
我習慣了第三種,所以我這里安裝Git了,
sudo yum -y install git預計5m,1~5分鐘
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103066.png)
3、安裝Nginx [必要]
sudo yum install nginx預計14m,1~5分鐘
啟用和啟動服務:
sudo systemctl enable nginx sudo systemctl start nginx
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103067.png)
4、安裝Dotnet SDK [核心]
每臺計算機只需要執行一次此操作,
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103068.png)
sudo yum install dotnet-sdk-3.1
預計119M,20~30分鐘,這個時間比較長,所以你可以考慮在本地發布好,ftp到服務器,當然如果創建了sdk,以后就省事兒了,反正各有利弊,
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/58297121103069.png)
安裝成功,測驗一下版本:
dotnet --list-sdks
到了這里,我們輔助工具已經安裝完成了,接下來,重頭戲就來了——Docker安裝,
3、安裝Docker環境
1、安裝Docker源
sudo yum remove docker-ce
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030611.png)
Step 1: 安裝必要的一些系統工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2Step 2: 添加軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoStep 3: 更新并安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ceStep 4: 開啟Docker服務
sudo service docker start
安裝預計 5 分鐘
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030612.png)
設定docker開機啟動
systemctl enable docker
啟動docker
systemctl start docker
查看版本
docker --versio
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030613.png)
2、測驗Hello World
docker run hello-world如果本地沒有改鏡像,會自動從遠程倉庫拉取,然后再生成容器,
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030614.png)
當前服務器有哪些鏡像:
docker images
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030615.png)
那如何查看有哪些容器呢:
docker ps -a
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030616.png)
PS:這里的鏡像就像我們定義了一個hello的Class類,
容器呢,就是這個class類生成的物件,當然可以創建很多個,
這個時候,我們的環境已經已經搞好了,接下來就是重中之重,將我們的專案發布鏡像檔案了,
4、發布自己的鏡像
1、添加Docker支持
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030617.png)
FROM swr.cn-south-1.myhuaweicloud.com/mcr/aspnet:3.1-alpine
WORKDIR /app
COPY . .
EXPOSE 8081
ENTRYPOINT ["dotnet", "Blog.Core.dll","-b","0.0.0.0"]
簡介一下:
FROM:意思是我們的專案源鏡像是哪個;
WORKDIR:鏡像的作業目錄;
COPY:復制檔案(將Dockerfile所在目錄下檔案復制到鏡像中的作業目錄中)
EXPOSE:容器要開放的埠(我們用.NETCORE的8081埠)
ENTRYPOINT:為容器啟動后要執行的命令 (這里將執行dotnet Blog.Core.dll命令)
然后右鍵,始終屬性、始終復制到輸出(bin)目錄:
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030618.png)
2、發布
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030619.png)
執行發布命令:
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030620.png)
接下來就是docker 編譯鏡像了,
3、創建鏡像
dotnet Blog.Core.dll
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030621.png)
.UseUrls("http://*:8081")否則的話,系統找不到我們對應的埠資訊,
沒問題后,開始build了,還是在當前檔案夾下(記得那個點):
docker build -t laozhang/apkimg .其中laozhang/apkimg是我們的鏡像名,
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030622.png)
然后查看機器上的鏡像:
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030623.png)
4、推送鏡像到Docker hub倉庫
先注冊
(注意注冊的時候,第一個選項,這個Docker ID是我們創建的鏡像的ID,
也就是laozhangisphi/apkimg的laozhangisphi)
當然如果不一樣,你后期也可以自己做配置,不要方,
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030624.png)
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030625.png)
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030626.png)
第三步:服務器鏡像推送
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030627.png)
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030628.png)
docker push laozhangisphi/apkimg:tagname
檢查:
我們登錄管理后臺,查看結果
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030630.png)
docker pull laozhangisphi/apkimg:latest
現在我們有了鏡像,那就可以創建容器了,因為有了容器才能運行,
5、生成并運行容器
生成容器
docker run -it -p 8081:8081 laozhang/apkimg
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030631.png)
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030632.png)
docker start 53d047bb3a66
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030633.png)
狀態已經是運行中了,那怎么測驗介面是否正常了呢,可以用curl命令:
curl http://localhost:8081/api/blog
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030634.png)
如果到了這里,恭喜你,Docker部署NetCore基本已經搞定了,如果你想看看容器內的日志資訊,
查看日志
docker logs 53d047bb3a66
其他常用命令
洗掉一個imageid的鏡像
docker rmi [IMAE_ID]
#洗掉所有鏡像
sudo docker rmi $(docker images -q)
#查看所有容器運行狀態
docker ps -a
docker container ls -all
#洗掉一個containerid的容器(實體)
docker rm 6f0c67de4b72
#洗掉所有容器
docker rm $(sudo docker ps -a -q)
容器日志
#查看指定時間后的日志,只顯示最后100行:
docker logs -f -t --since="2019-06-08" --tail=100 CONTAINER_ID
#查看某時間之后的日志:
docker logs -t --since="2019-06-08" CONTAINER_ID
#查看某時間段日志:
docker logs -t --since="2019-06-08" --until "2019-06-09" CONTAINER_ID
#查看最近30分鐘的日志:
docker logs --since 30m CONTAINER_ID
程序
1、停止容器 docker stop 5ab35ebcb6e22、洗掉容器 docker rm 5ab35ebcb6e2
3、洗掉鏡像 docker rmi 7567a38d491c
4、啟動容器 docker start 685cb02f53
剩下最后一步了,nginx代理,因為我們的Docker已經守護了這個行程,所以我們不需要其他的守護行程的作業,
6、Nginx代理服務
vim xxx
i
:wq!
如果看不懂,還是下載本地修改吧,修改的內容如下:
###### apk begin #######
server {
listen 9001;
server_name localhost;
location / {
root html;
proxy_pass http://localhost:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
}
###### apk end #######
接下來就是重啟Nginx服務,首先可以檢測語法錯誤:
nginx -t
![[跨平臺系列三Docker篇]:ASP.NET Core應用 [跨平臺系列三Docker篇]:ASP.NET Core應用](https://img.uj5u.com/2020/09/12/582971211030635.png)
nginx -s reload
http://192.144.227.46:9001/index.html
好啦,今天到這里已經完全說完了,整個程序大約2個小時,中間沒發現什么問題,因為我有Linux的基礎,所以總體還是很簡單的,主要就是docker的那幾個常用命令,需要看檔案查一查,加油!
來源:老張的哲學
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/13546.html
標籤:.NET Core
