步骤
-
git仓库下克隆cnpmjs.org项目
git clone https://github.com/cnpm/cnpmjs.org.git 复制代码
-
进入到cnpmjs.org项目内
cd cnpmjs.org 复制代码
-
查看Dockerfile文件
## 引用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的配置文件,所以要修改其中几处配置- 在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, // 其他不需要修改,略... } 复制代码
- 在mysql中新建数据库
-
接下来我们要构建镜像,在
cnpmjs.org
文件夹下执行docker build命令,构建镜像(构建过程中需要下载依赖包,时间较长请耐心等待)docker build -t cjh/cnpmjs:20180911 复制代码
当出现successfully字样的时候就说明已经构建成功了,此时我们执行查看镜像列表命令:
docker image ls 复制代码
此时我们刚刚构建的镜像就在列表中。
-
然后我们使用构建好的镜像来运行cnpmjs容器
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 宿主机与容器内文件映射
待容器启动成功之后,我们来查看正在运行的容器列表:
docker ps 复制代码
-
通过浏览器访问,CNPM服务:
http://192.168.2.112:7002
大功告成!