跳至正文

如何手动部署到容器

内容纲要

前言

当前是容器化部署的时代,无论是否采用分布式/微服务架构,推荐使用 Docker 进行部署。Linux + Docker 是最佳组合,如果您使用 Windows,可以考虑安装 Linux 虚拟机以提高兼容性和部署效率。ADNC 在服务器上的部署需要先安装 MySQLRedisRabbitMQLokiConsulNginx

  • 文档中 10.2.8.5 为作者服务器的内网 IP,请根据实际情况更换。
  • 服务器操作系统:Ubuntu 22.04
  • 服务器需预先安装 DockerDocker Compose

1. 获取环境安装脚本

# 在本地 `adnc` 目录执行
git submodule init
# 拉取所有子模块
git submodule update --recursive  
# 更新到最新版本
git submodule foreach --recursive git pull origin main

2. 环境安装

2.1 登录服务器并创建目录

sudo mkdir -p /adnc
cd /adnc

2.2 上传环境部署脚本

  • 在本地 adnc 目录下进入 doc 文件夹,将 adnc/doc/devops 目录上传至服务器 /adnc 目录。

上传后服务器目录结构如下:

adnc
└── devops
    └── docker-compose

2.3 执行环境部署脚本

cd /adnc/devops/docker-compose
sudo docker-compose up -d

docker-compose.yml 文件将执行以下操作:

  • 部署 Consul 集群并初始化配置信息
  • 部署 MariaDB 并初始化数据库
  • 部署 Redis
  • 部署 RabbitMQ
  • 部署 Loki
  • 部署 Grafana

3. 修改 Consul 配置信息

3.1 访问 Consul UI:http://服务器IP:8590
3.2 将 10.2.8.5 替换为您的服务器 IP

服务名 描述 配置路径
Adnc.Gateway.Ocelot Ocelot 网关 /adnc/staging/gateway/appsettings
Adnc.Demo.Admin.Api 系统管理服务 /adnc/staging/admin-api/appsettings
Adnc.Demo.Maint.Api 运维管理服务 /adnc/staging/maint-api/appsettings
Adnc.Demo.Cust.Api 客户管理服务 /adnc/staging/cust-api/appsettings
- 公共配置 /adnc/staging/shared/appsettings

ADNC 将从 Consul 读取 appsettings 配置并填充 Configuration 对象。 Consul 任意节点的 Key/Value 配置都会自动同步至其他节点。 配置示例参考本地 adnc/doc/consul/demo 目录中的 JSON 文件。

4. 部署后端

4.1 安装 .NET 8 SDK

sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0

4.2 创建 adnc 目录并设置权限

sudo mkdir -p /adnc/nginx/{conf.d,html,logs,ssl}
sudo mkdir -p /adnc/src
sudo chmod -R 777 /adnc

4.3 上传后端代码

上传前先执行 Delete-BIN-OBJ-Folders.bat,该文件会清理 binobj 目录。

需要上传的文件:

  • Demo 目录
  • Gateways 目录
  • Directory.Build.props
  • deploy_demo.sh
  • deploy_ocelot.sh

上传后服务器目录结构如下:

adnc
├── src
│   ├── Demo
│   ├── Gateways
│   ├── deploy_demo.sh
│   ├── deploy_ocelot.sh
│   └── Directory.Build.props
└── nginx

4.4 执行部署脚本

cd /adnc/src
# 赋予执行权限
sudo chmod +x deploy_demo.sh deploy_ocelot.sh
# 执行部署
sudo bash deploy_demo.sh
sudo bash deploy_ocelot.sh

4.5 验证后端服务

  • 访问 Consul UI 查看 Demo 服务是否成功注册。
  • 访问 http://服务器IP:5000 检查网关是否正常工作。

5. 部署前端

5.1 创建 nginx.conf 文件

sudo touch /adnc/nginx/nginx.conf
sudo chmod 777 /adnc/nginx/nginx.conf

5.2 配置 nginx.conf

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    gzip_types text/plain application/javascript text/css;

    server {
        listen 80;
        server_name localhost;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
        location /api/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://10.2.8.5:5000/api/;
        }
    }
}

5.3 启动 Nginx

sudo docker run -it -d --restart always --network host \
  --name adnc-nginx \
  -v /adnc/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -v /adnc/nginx/html:/usr/share/nginx/html \
  -v /adnc/nginx/logs:/var/log/nginx/ \
  -v /adnc/nginx/ssl:/etc/nginx/ssl \
  -e TZ=Asia/Shanghai \
  nginx

5.4 打包并部署前端

pnpm run build
  • build 成功后,将 dist 目录内的文件上传至 /adnc/nginx/html
  • 访问 http://服务器IP,如成功显示登录页面,则 ADNC 部署成功。

6. 结语

🎉 恭喜您,ADNC 框架已成功部署!

如果本项目对您有帮助,欢迎 Star & Fork 支持!

ADNC —— 一个可落地的 .NET 微服务/分布式开发框架。

《如何手动部署到容器》有4个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注