Ubuntu+Docker+Nginx+OrchardCore自動化部署

Ubuntu+Docker+Nginx+OrchardCore自動化部署

1.服務端環境搭建

1.Docker安裝

# 使用安裝腳本自動安裝,並且使用阿里源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 安裝完成後建議使用阿里加速
# https://www.aliyun.com/
# 登錄後選擇容器鏡像服務,鏡像中心,然後選擇鏡像加速器,參考配置

在這裏插入圖片描述

2.Nginx安裝

# 安裝nginx反向代理
sudo apt-get install nginx
# 查看nginx確定安裝完成
sudo nginx -v

3.Let’s Encrypt 證書管理搭建

# 參考鏈接 https://acme.sh
# 安裝acme.sh
curl https://get.acme.sh | sh
# 設置命令別名,方便使用命令
alias acme.sh=~/.acme.sh/acme.sh

# 使用實例參考官網
# 以下爲我的使用配置,使用域名dns校驗
# dns使用騰訊dnspod 鏈接https://www.dnspod.cn/
# 示例

# 域名商API ID
export DP_Id="*****"
# 域名商API Key
export DP_Key="********************************"
# 生成證書
acme.sh --issue --dns dns_dp -d domain.cn -d www.domain.cn
# 創建證書文件夾,用於存放證書
mkdir -p /srv/ssl
# 安裝證書文件 這裏配合一個重新加載的命令,針對自動更新證書使用,可以在自動更新後自動加載新證書
acme.sh --install-cert -d domain.cn -d www.domain.cn \
--key-file /srv/ssl/www.domain.cn.key \
--fullchain-file /srv/ssl/www.domain.cn.crt \
--reloadcmd "service nginx force-reload"
# 設置自動更新
acme.sh --upgrade --auto-upgrade

在這裏插入圖片描述

4.Nginx代理網站

# 創建網站Nginx配置文件
sudo vim /etc/nginx/sites-available/www.domain.cn
# 插入以下內容
upstream domain-backend {
    server 127.0.0.1:5001;
}

server {
        listen 443;
        server_name www.domain.cn domain.cn;
        ssl on;
        ssl_certificate /srv/ssl/www.domain.cn.crt;
        ssl_certificate_key /srv/ssl/www.domain.cn.key;

        location / {
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header Host $http_host;
               proxy_set_header X-NginX-Proxy true;
               proxy_http_version 1.1;
               proxy_set_header Upgrade $http_upgrade;
               proxy_redirect off;
               proxy_set_header        X-Forwarded-Proto $scheme;
               proxy_read_timeout 86400;
               proxy_pass http://domain-backend/;
        }
}

server {
        listen 80;
        server_name www.domain.cn;
        rewrite ^(.*)$ https://${server_name}$1 permanent;
}

# 建立軟鏈接
sudo ln -s /etc/nginx/sites-available/www.domain.cn /etc/nginx/sites-enabled/

# 檢查配置是否有錯誤
sudo nginx -t
# 沒有錯誤就加載配置文件
nginx -s reload
# 此時訪問www.domain.cn,這時網站應該可以打開,但是會錯誤,因爲還沒有搭建網站,可以看到證書已經正常

2.開發以及代碼管理

1.OrchardCore開發

開發參考官網,或示例 https://gitee.com/YuexS/OrchardCoreExample

這裏就不過多演示

2.源代碼使用阿里code管理

  • 1.登陸並開通阿里code https://code.aliyun.com/
  • 2.添加項目
  • 3.本地設置推送到阿里code(git推送相關設置可以參考官網或阿里新建的項目,比較簡單)

3.開通容器鏡像服務並設置

1.創建命名空間

在這裏插入圖片描述

2.創建鏡像倉庫

在這裏插入圖片描述

3.創建鏡像倉庫時可以選擇雲code,登陸並且綁定,選擇code命名空間以及倉庫

創建鏡像倉庫時可以選擇雲code

登陸並且綁定

選擇code命名空間以及倉庫

確認並勾選 代碼變更自動構建鏡像

在這裏插入圖片描述

4.構建設置

進入創建的鏡像倉庫進行設置

1.選擇構建

2.添加規則

根據自己情況進行設置自動構建規則

在這裏插入圖片描述
在這裏插入圖片描述

4.創建Dockerfile文件

我這裏指定了NuGet.config配置,如果未使用,可以刪除

項目路徑以及運行文件需根據自己情況進行更改

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 443 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY /. /src
RUN dotnet restore --configfile NuGet.config
COPY . /src
WORKDIR /src
RUN dotnet build /src/src/Applications/FussenSvc.Application.WebHost/FussenSvc.Application.WebHost.csproj -c Release -o /app/build

FROM build AS publish
RUN dotnet publish /src/src/Applications/FussenSvc.Application.WebHost/FussenSvc.Application.WebHost.csproj -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "FussenSvc.Application.WebHost.dll"]

5.代碼提交

這裏不贅述,提交代碼到git並推送後,此時容器會自動構建,可以查看構建日誌

3.服務端部署

# 1.登陸阿里容器 鏈接地址爲你的容器的公網地址
docker login --username=阿里賬號 --password=阿里密碼 reg![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200403155856743.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NodXl1ZWEz,size_16,color_FFFFFF,t_70)istry.cn-hangzhou.aliyuncs.com
# 2.拉取並運行容器
# 這裏設置瞭如果關閉,將主機端口5001映射到容器,指定了容器時區,容器名稱,以及持久化到本地,版本爲latest
docker run -d -p 5001:80 --restart always -e TZ="Asia/Shanghai" --name fussensvcsolution -v /srv/wwwroot/www.domain.cn:/app/App_Data registry.cn-hangzhou.aliyuncs.com/yue xs/fussensvcsolution:latest
# 3.安裝watchtower進行容器自動更新管理
# 這裏設置了fussensvcsolution watchtower兩個容器自動更新,更新時間默認5分鐘,可以參考watchtower官網
docker run -d \
    --restart always \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /root/.docker/config.json:/config.json \
    containrrr/watchtower \
   --cleanup \
   fussensvcsolution watchtower

4.配置完成

  • 此時網站可以正常訪問,在代碼提交時,也會自動進行自動打包docker鏡像,服務端自動更新拉取!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章