# 基于Dockerfile部署ohpm-repo私仓

Dockerfile是构建Docker镜像的文本文件，其中包含了构建镜像的命令和说明，可以实现如下功能：

*   指定基础镜像。
*   创建项目目录。
*   修改config.yaml配置。
*   设置环境变量。
*   创建用户，设置文件权限。
*   运行install命令，更新环境变量。
*   运行start命令，启动私仓服务。

本文档介绍在Linux系统中如何使用Docker命令搭建ohpm-repo私仓。

**环境准备**

1.  下载Docker镜像，并进行环境搭建。
2.  下载ohpm-repo工具包，将下载的工具包重命名为ohpm-repo.zip，点击链接获取。
3.  将Dockerfile文件和ohpm-repo.zip放在同一目录下。
    
    Dockerfile文件模板如下：
    
    ```
    # 使用官方 Node.js 18 镜像
    FROM node:18
    COPY ./ohpm-repo.zip /tmp/ohpm-repo.zip
    RUN 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.0
    RUN 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; \
        fi
    ENV 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-repo
    USER myuser
    RUN ohpm-repo install
    ENV OHPM_REPO_DEPLOY_ROOT="/home/myuser/ohpm-repo"
    CMD ["ohpm-repo", "start"]
    ```
    

**搭建私仓服务**

1.  在当前Dockerfile文件目录下，构建镜像。
    
    ```
    docker build -t ohpm-repo .
    ```
    
2.  启动服务，包括前台运行命令、后台运行命令两种形式。
    
    ```
    # 前台运行命令
    docker run -it -p 8088:8088 ohpm-repo
    # 后台运行命令
    docker run -d --restart=unless-stopped --name ohpm-repo -p 8088:8088 ohpm-repo
    ```
    
3.  浏览器访问IP地址8088，使用私仓服务。