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

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

文章目录

  • Ubuntu+Docker+Nginx+OrchardCore自动化部署
    • 1.服务端环境搭建
      • 1.Docker安装
      • 2.Nginx安装
      • 3.Let’s Encrypt 证书管理搭建
      • 4.Nginx代理网站
    • 2.开发以及代码管理
      • 1.OrchardCore开发
      • 2.源代码使用阿里code管理
      • 3.开通容器镜像服务并设置
        • 1.创建命名空间
        • 2.创建镜像仓库
        • 3.创建镜像仓库时可以选择云code,登陆并且绑定,选择code命名空间以及仓库
        • 4.构建设置
      • 4.创建`Dockerfile`文件
      • 5.代码提交
    • 3.服务端部署
    • 4.配置完成

1.服务端环境搭建

1.Docker安装

# 使用安装脚本自动安装,并且使用阿里源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 安装完成后建议使用阿里加速
# https://www.aliyun.com/
# 登录后选择容器镜像服务,镜像中心,然后选择镜像加速器,参考配置

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第1张图片

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

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第2张图片

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.创建命名空间

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第3张图片

2.创建镜像仓库

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第4张图片

3.创建镜像仓库时可以选择云code,登陆并且绑定,选择code命名空间以及仓库

创建镜像仓库时可以选择云code

登陆并且绑定

选择code命名空间以及仓库

确认并勾选 代码变更自动构建镜像

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第5张图片

4.构建设置

进入创建的镜像仓库进行设置

1.选择构建

2.添加规则

根据自己情况进行设置自动构建规则

Ubuntu+Docker+Nginx+OrchardCore自动化部署_第6张图片
Ubuntu+Docker+Nginx+OrchardCore自动化部署_第7张图片

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镜像,服务端自动更新拉取!

你可能感兴趣的:(Docker,OrchardCore)