当前位置:首页>鸿蒙APP>使用docker部署华为鸿蒙ohpm-repo私仓

使用docker部署华为鸿蒙ohpm-repo私仓

  • 2026-10-27 11:12:09
使用docker部署华为鸿蒙ohpm-repo私仓
我们需要一个ohpm的内部私有仓库,开发推荐使用ohpm-repo。ohpm-repo是一个搭建轻量级的ohpm私仓服务的工具。它与ohpm包管理器兼容,并按需缓存所有依赖项,加速私有网络中的安装。
习惯使用docker compose来启动一个仓库了,目前没有现成的容器镜像,不过官方提供了一个Dockerfile文件参考。
准备工作:
1.提前准备好docker环境
2.下载ohpm-repo工具包,下载地址:https://developer.huawei.com/consumer/cn/download/ohpm-repo
3.Dockerfile文件和重命名的ohpm-repo.zip放在同一目录下。
这是官方提供的Dockerfile参考:
# 使用官方 Node.js 18 镜像FROM node:18COPY ./ohpm-repo.zip /tmp/ohpm-repo.zipRUN mkdir -p /opt/ohpm-repo && \    unzip /tmp/ohpm-repo.zip -d /opt/ohpm-repo && \    rm -f /tmp/ohpm-repo.zip# 修改conf/config.yaml的listen配置,不能用localhost和127.0.0.1,必须使用0.0.0.0RUN if [ -f /opt/ohpm-repo/conf/config.yaml ]; then \      sed -i 's/listen: [^ ]*/listen: 0.0.0.0:8088/g' /opt/ohpm-repo/conf/config.yaml; \    fiENV OHPM_REPO_BIN_DIR="/opt/ohpm-repo/bin"ENV PATH="${OHPM_REPO_BIN_DIR}:${PATH}"# 创建用户,不允许使用root用户来运行ohpm-repo install和ohpm-repo start命令RUN useradd -m myuser && \    chown -R myuser:myuser /opt/ohpm-repo && \     chmod -R 755 /opt/ohpm-repoUSER myuserRUN ohpm-repo installENV OHPM_REPO_DEPLOY_ROOT="/home/myuser/ohpm-repo"CMD ["ohpm-repo", "start"]
制作镜像:
docker build -t ohpm-repo:5.4.11 .
我原先在一台相对较新的服务器(RockyLinux 8.10)上build镜像,docker版本为:24.0.0,然后一直build失败,一直卡在useradd这一步,折腾好久,甚至替换为node用户,也无法解决问题。后来在一台CentOS7.9,docker版本为20.10.0的服务器上成功编译。
使用docker compose运行:
习惯使用docker compose来拉起一个服务,同时我们需要对ohpm-repo做数据持久化(这是一个坑点)
参考yaml:
version: '3'services:  ohpm-repo:    image: ohpm-repo:5.4.11    container_name: ohpm-repo    restart: unless-stopped  # 设置容器重启策略    ports:      # 宿主机端口:容器内端口 (8088是ohpm-repo的默认端口)      - "8088:8088"    volumes:      # 挂载配置文件 (Bind Mount)      #- ./config.yaml:/opt/ohpm-repo/conf/config.yaml:ro      # 挂载数据目录 (Volume)      - ./ohpm-repo-data/myuser/ohpm-repo:/home/myuser/ohpm-repo
然而当我docker compose up -d,查看容器一直是restarting状态,日志提示我需要先初始化。原来是我本地挂载的目录是空目录,ohpm-repo无法直接启动,百思不得其解,无奈之下我先临时手动启动docker run
docker run -it -p 8088:8088 ohpm-repo:5.4.11
结果可以正常跑起来。
问了AI说ohpm-repo build的镜像里包含了初始化数据,docker run可以正常运行,但是加了持久化就不行了。
我后来只能从这个运行中的容器去docker cp数据到本地,然后修改我的docker compose文件,总共成功运行了。
./ohpm-repo-data/myuser/ohpm-repo:/home/myuser/ohpm-repo
新的坑点来了,当我去一台docker版本为18.03.1-ce的服务器上,同样的镜像,同样的初始化目录数据,却一直没法跑起来,仍然提示我需要初始化,当我又回到build镜像报错的那台服务器(docker版本为:24.0.0)却又能顺畅的跑起来,我没有找到具体的原因,只能归根与低版本的docker不匹配。

ohpm-repo首次启动时,默认创建一个管理员账号,账号名称:admin,密码:12345Qq!。该账号在首次登录时,需要修改其密码,请修改密码后,重新登录该账号。

最新文章

随机文章