曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

在Docker上运行OHPM私仓服务

OHPM(OpenHarmony Package Manager)是鸿蒙开发中的包管理工具,类似于Maven、npm、CocoaPods等,常用的是OpenHarmony三方库中心仓,可以到上面搜索项目需要的第三方库。

openharmony-ohpm

使用起来非常简单,只要下面的命令就可以快速安装

ohpm install <package_name> 

在企业内部为了共享代码一般会搭建私仓,比如:

好在鸿蒙官方提供了一个项目(ohpm-repo,轻量级的ohpm私仓服务),可以比较方便的来搭建一个ohpm的私仓,方便在团队之间共享代码。搭建过程很简单,官方文档写得非常详细。

首先到下载中心下载最新的ohpm-repo工具。

ohpm-repo-download

修改配置 conf/config.yaml,更多配置可以参考官方文档

listen: 0.0.0.0:8088        # 建议修改为具体的ip/域名

运行 ohpm-repo 服务,将 bin 目录加入到环境变量,运行:

ohpm-repo install

ohpm-repo start

说明:

  • 要求 node.js 18.x 及以上版本
  • ohpm-repo 私仓不允许使用 root 用户启动,需要使用其他用户安装运行
  • ohpm-repo 首次启动时,默认创建一个管理员账号,账号名称:admin,密码:12345Qq!

刚开始想在docker上面部署的但是各种报错,主要还是用户权限的问题,最近偶然发现有hangox/ohpm-repo这个镜像已经能够实现我的需求。

简单看了下整理了一下在docker上运行ohpm-repo的配置步骤,Dockerfile 配置内容如下:

FROM node:18

# 创建用户ohpm
RUN adduser --disabled-password --gecos '' ohpm

# 拷贝文件
COPY ohpm-repo-5.0.5.0 /home/ohpm/ohpm-repo
COPY start.sh /home/ohpm

# 给目录/文件授权
RUN chown -R ohpm:ohpm /home/ohpm/ohpm-repo \
    && chmod +x /home/ohpm/ohpm-repo/bin/ohpm-repo \
    && chmod +x /home/ohpm/start.sh

# 切换到ohpm用户
USER ohpm

# 设置工作空间
WORKDIR /home/ohpm

# 将 ohpm-repo/bin 添加到环境变量
ENV PATH=/home/ohpm/ohpm-repo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 默认端口号
EXPOSE 8088

# 运行启动脚本
CMD ["./start.sh"]

其中 start.sh 脚本内容如下:

ohpm-repo install
ohpm-repo start

编译运行:

docker build -t zengjing/ohpm-repo:5.0.5.0 .

docker run -d -p 8088:8088 --name ohpm-repo zengjing/ohpm-repo:5.0.5.0

找了几个第三方库上传试了一下,效果还行:

ohpm-repo-demo

当然还得解决配置和目录共享的问题,代码比较简单,完整配置代码见:

https://github.com/hhtczengjing/ohpm-repo-docker

参考资料

最近的文章

博客支持暗黑模式

去年支持了 github action 的方式实现代码push到master分支后能自动发布到 github pages 上面,确实比之前使用脚本强制提交发布的方式方便了不少,主要还是不需要本地配置环境了,切换到其他设备的只要写完提交就好了。配置支持 github action 也是非常简单,从官方市场上面选择需要的action,简单配置一下就好了最近想把博客适配支持一下暗黑模式,需要在本地调试一下,按照之前的文档安装了一下环境,结果是各种报错,折腾了个把小时,最后还是没搞定。最终采用的是...…

Note继续阅读
更早的文章

MySQL创建函数语法报错的解决过程

近期想把之前做的一个系统在本地跑起来做一些测试,结果在执行创建函数语句的时候报错了,解决的方式很简单,免得下次再遇到,记录一下解决过程。SQL语句如下:DROP FUNCTION IF EXISTS fn_version_format;CREATE FUNCTION fn_version_format(version VARCHAR(50)) RETURNS VARCHAR(255)BEGIN DECLARE v_con VARCHAR(255); SET v_con =...…

Note继续阅读