在 银河麒麟 V10 SP2(Kylin V10 SP2) 系统上部署YApi

银河麒麟 V10 SP2(Kylin V10 SP2) 系统上,若你的环境 只能访问内部 YUM 源(如企业内网镜像站、华为云内网源等) ,而无法连接公网(如 mirrors.huaweicloud.com 或互联网),请按以下步骤安全、合规地安装 Docker + Docker Compose ,并部署 YApi


✅ 前提条件

  • 你的内网 YUM 源已同步 银河麒麟 V10 SP2 的官方仓库
  • 内网源地址已配置到 /etc/yum.repos.d/(例如 kylin-intranet.repo
  • 你有 sudo 权限

🔍 验证内网源是否可用:

复制代码
yum repolist
yum search docker

📦 一、通过内部 YUM 源安装 Docker

1. 搜索 Docker 包(确认是否存在)

复制代码
yum search docker

在麒麟 V10 SP2 中,Docker 通常以以下形式存在:

  • docker-ce(社区版,较新)
  • docker-engine(旧版)
  • docker(麒麟自研封装版)

⚠️ 不要安装 podman(虽然名字类似,但不是 Docker)

2. 安装 Docker(推荐方式)

方式 A:如果内网源包含 docker-ce
复制代码
# 安装 Docker 社区版
sudo yum install -y docker-ce docker-ce-cli containerd.io
方式 B:如果只有 docker(麒麟封装版)
复制代码
# 安装麒麟提供的 Docker
sudo yum install -y docker

3. 启动并启用 Docker

复制代码
sudo systemctl start docker
sudo systemctl enable docker

4. 验证安装

复制代码
docker --version
# 示例输出:Docker version 20.10.9, build ...

💡 如果 docker 命令未找到,尝试 docker-engine 或检查包名:rpm -qa | grep -i docker


🔧 二、安装 Docker Compose(内部源方式)

Docker Compose 通常不在 YUM 源中,但部分企业内网会提供 RPM 包。

方法 1:检查内网源是否有 docker-compose

复制代码
yum search docker-compose
# 或
yum list available | grep -i compose

如果有,直接安装:

复制代码
sudo yum install -y docker-compose

方法 2:若无,则需 手动部署二进制文件(无需联网)

📌 假设你已从其他机器下载好 docker-compose 二进制文件(或由运维提供)

  1. docker-compose 文件上传到服务器(如 /tmp/docker-compose

  2. 安装:

    复制代码
    sudo cp /tmp/docker-compose /usr/local/bin/
    sudo chmod +x /usr/local/bin/docker-compose
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  3. 验证:

    复制代码
    docker-compose --version

✅ 二进制文件获取建议:

  • GitHub Releases 下载对应版本(linux-x86_64
  • 或使用华为云内网软件仓库中的预编译包

🐳 三、部署 YApi(使用 Docker Compose)

由于 YApi 本身不依赖 YUM 源(运行在容器中),只需确保能拉取镜像即可。

情况 1:内网有 Docker 镜像仓库(如 Harbor)

  1. 运维已将 jayfong/yapi:latestmongo:4.4 同步到内网 Harbor

  2. 修改 docker-compose.yml 使用内网地址:

    services:
    yapi-web:
    image: harbor.intranet.local/ops/yapi:latest # ← 内网镜像
    # ... 其他配置不变

    mongo:
    image: harbor.intranet.local/base/mongo:4.4 # ← 内网镜像
    # ...

  3. 登录 Harbor(如需要):

    复制代码
    docker login harbor.intranet.local -u user -p password

情况 2:无内网镜像仓库,但允许临时拉取一次公网镜像

(适用于初始化部署,后续可离线运行)

  1. 临时开通外网权限(或由跳板机代理)

  2. 执行:

    复制代码
    cd /opt/yapi
    sudo docker-compose pull   # 拉取镜像
    sudo docker-compose up -d  # 启动
  3. 成功后关闭外网,服务仍可运行(镜像已缓存)

情况 3:完全离线(需提前导入镜像)

  1. 在有网机器上保存镜像:

    复制代码
    docker save jayfong/yapi:latest mongo:4.4 -o yapi-images.tar
  2. 上传 yapi-images.tar 到麒麟服务器

  3. 导入镜像:

    复制代码
    docker load -i yapi-images.tar
  4. 正常启动 docker-compose up -d


📁 四、完整部署步骤(内网环境)

复制代码
# 1. 创建目录
mkdir -p /opt/yapi/{config,data}

# 2. 准备 config.json(内容见前文)
cat > /opt/yapi/config/config.json <<EOF
{
  "port": "3000",
  "adminAccount": "admin@intranet.local",
  "adminPassword": "SecurePass123!",
  "db": {
    "servername": "mongo",
    "DATABASE": "yapi",
    "port": 27017
  },
  "closeRegister": true
}
EOF

# 3. 编写 docker-compose.yml(使用内网镜像或默认)
cat > /opt/yapi/docker-compose.yml <<EOF
version: '3'
services:
  yapi-web:
    image: jayfong/yapi:latest
    ports: ["3000:3000"]
    volumes: ["./config:/yapi/config:ro"]
    depends_on: [mongo]
    restart: unless-stopped

  mongo:
    image: mongo:4.4
    volumes: ["./data:/data/db"]
    restart: unless-stopped
EOF

# 4. 启动(假设镜像已存在或可拉取)
cd /opt/yapi
sudo docker-compose up -d

🔒 五、安全与合规建议(内网环境)

项目 建议
镜像来源 使用企业 Harbor 仓库,禁止直接拉取公网镜像
漏洞扫描 yapimongo 镜像进行 CVE 扫描
网络隔离 YApi 仅对内网开放,禁止暴露到互联网
日志审计 /opt/yapi/logs 接入 SIEM 系统
定期更新 由运维统一更新镜像,避免自行升级

❓ 常见问题

Q:yum install docker 报错 "No package docker available"?

  • 原因:内网源未同步 Docker 相关仓库
  • 解决
    1. 联系运维将 docker-ce RPM 包放入内网源

    2. 或手动下载 RPM 安装:

      复制代码
      sudo yum install -y ./docker-ce-*.rpm

Q:Docker 启动失败,提示 selinux 错误?

  • 解决 (临时):

    复制代码
    sudo setenforce 0
    sudo systemctl restart docker
  • 长期:配置 SELinux 策略或禁用(根据安全策略)


✅ 总结

纯内网麒麟 V10 SP2 环境 中安装 YApi 的关键:

  1. Docker 通过内网 YUM 源或 RPM 安装
  2. Docker Compose 通过 RPM 或二进制部署
  3. YApi 镜像通过内网 Harbor 或离线导入
  4. 配置文件与数据持久化到本地

只要基础组件(Docker)能装上,YApi 作为容器应用,天然适合内网离线部署。

相关推荐
码界奇点17 天前
基于Golang的微服务API网关系统设计与实现
开发语言·微服务·golang·毕业设计·yapi·源代码管理
码界奇点22 天前
基于Spring MVC与AngularJS的API接口管理系统设计与实现
spring·毕业设计·yapi·mvc·angular.js·源代码管理
西西偷西瓜1 个月前
Trae IDE 读取并解析接口文档:trae-swagger-mcp 插件开发分享
前端·ide·自动化·yapi·ai编程
Proud lion1 个月前
Apipost开发管理平台功能对比与应用场景分析
yapi·postman·apipost·apifox·api开发
诗酒当趁年华4 个月前
Yapi接口文档导出测试用例至Excel中
yapi·测试用例·excel
、我是男生。5 个月前
火线、零线、地线
yapi
绿色果酱1 年前
利用Postman和Apipost进行WebSocket调试和文档设计
websocket·测试工具·yapi·postman
lichong9511 年前
【Flutter&Dart】交互~创建一个有状态的widget &StatefulWidget(2/100)
flutter·yapi·交互·api·postman·dart·smartapi
TsengOnce1 年前
Docker 安装 Yapi
docker·yapi