基於Docker搭建CNPM私有倉庫

步驟

  • git倉庫下克隆cnpmjs.org項目node

    git clone https://github.com/cnpm/cnpmjs.org.git
    複製代碼
  • 進入到cnpmjs.org項目內mysql

    cd cnpmjs.org
    複製代碼
  • 查看Dockerfile文件git

    ## 引用node鏡像
    FROM node:6.11
    ## 做者
    MAINTAINER Bono Lv <lvscar  {aT} gmail.com>
    
    # Working enviroment工做環境
    ENV \
        CNPM_DIR="/var/app/cnpmjs.org" \
        CNPM_DATA_DIR="/var/data/cnpm_data" 
        
    # 執行命令,在容器中建立目錄
    RUN mkdir  -p ${CNPM_DIR}
    
    ## 設置工做目錄
    WORKDIR ${CNPM_DIR}
    
    ## 將package.json文件拷貝到容器的指定目錄下
    COPY package.json ${CNPM_DIR}
    
    ## 設置容器中的npm鏡像地址
    RUN npm set registry https://registry.npm.taobao.org
    
    ## 下載依賴
    RUN npm install
    
    ## 將宿主機中cnpmjs.org項目下的全部文件拷貝到容器的指定目錄中
    COPY .  ${CNPM_DIR}
    
    ## 將宿主機中config.js文件拷貝到容器中指定路徑下config目錄下,此步很是關鍵,也就是說容器中將使用## config.js來當作cnpmjs的配置文件
    COPY docs/dockerize/config.js  ${CNPM_DIR}/config/
    
    ## 開放7001和7002端口
    EXPOSE 7001/tcp 7002/tcp
    
    ## 掛載數據卷綁定給宿主機
    VOLUME ["/var/data/cnpm_data"]
    
    # Entrypoint容器啓動命令
    CMD ["node", "dispatch.js"]
    複製代碼
  • 找到docs/dockerize/config.js文件,由於其是cnpmjs的配置文件,因此要修改其中幾處配置github

    • 在mysql中新建數據庫cnpmjs,cnpmjs.org/docs/db.sql文件導入數據庫,完成建表工做
    • 修改config.js文件
    ## enableCompress設置爲true
    enableCompress: true
    
    ## 修改數據庫配置
    database: {
        db: 'cnpmjs',
        username: 'root',
        // 填寫數據庫密碼
        password: '',
        // 數據源設置爲mysql
        dialect: 'mysql',
        // 設置數據庫Host地址(注意:若是mysql也運行在docker容器中的話,此處應填寫宿主機的ip地址)
        host: '192.168.2.112',
        // 設置mysql端口號
        port: 3306,
        // 其餘不須要修改,略...
    }
    複製代碼
  • 接下來咱們要構建鏡像,在cnpmjs.org文件夾下執行docker build命令,構建鏡像(構建過程當中須要下載依賴包,時間較長請耐心等待)sql

    docker build -t cjh/cnpmjs:20180911
    複製代碼

    當出現successfully字樣的時候就說明已經構建成功了,此時咱們執行查看鏡像列表命令:docker

    docker image ls
    複製代碼

    此時咱們剛剛構建的鏡像就在列表中。數據庫

  • 而後咱們使用構建好的鏡像來運行cnpmjs容器npm

    docker run 
    	-d \
    	-p 7001:7001 \
    	-p 7002:7002 \
    	-v /home/cnpm/cnpm_data:/var/data/cnpm_data \
    	--restart always \
    	--name cnpmjs \
    	cjh/cnpmjs:20180911
    複製代碼
    • -d 容器在後臺運行,並在成功啓動容器後輸出容器的完整ID
    • -p 設置宿主機端口與容器內端口的映射關係
    • -v 宿主機與容器內文件映射

    待容器啓動成功以後,咱們來查看正在運行的容器列表:json

    docker ps
    複製代碼

  • 經過瀏覽器訪問,CNPM服務:http://192.168.2.112:7002瀏覽器

大功告成!

相關文章
相關標籤/搜索