写在前面
初用 VirtualBox, 几个显示切换快捷键还是要记一下的:
Right Ctrl + F -- 切换到全屏模式
Right Ctrl + L -- 切换到无缝模式
Right Ctrl + C -- 切换到比例模式
Right Ctrl + Home -- 显示控制菜单使用 VirtualBox, 共享 Windows 目录
点击Devices->Inserts Guest Additions CD Images..
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom && sh VBoxLinuxAddition.run
在虚拟主机上共享C:\Share 到Share
mkdir /mnt/share
modprobe vboxsf
mount -t vboxsf Share /mnt/share使用 VirtualBox, 挂载 ios 文件
umount -f /dev/cdrom
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom使用 Docker 编写 image 构建 node 服务
编写 install_nodejs.sh
首先编写在 linux 里可以运行的 node 部署脚本
PACKAGE_NAME=node-v5.0.0-linux-x64
INSTALL_PATH=/data/nodejs
echo "unpackage and copy data: "
if [ -d ./${PACKAGE_NAME} ]; then
rm -rf ./${PACKAGE_NAME}
fi
tar zxvf ${PACKAGE_NAME}.tar.gz
if [ -d ${INSTALL_PATH} ]; then
rm -rf ${INSTALL_PATH}
fi
cp ${PACKAGE_NAME} ${INSTALL_PATH} -r
echo "link node to path: "
rm -rf /usr/local/bin/node
rm -rf /usr/local/bin/npm
rm -rf /usr/bin/node
rm -rf /usr/bin/npm
ln -s ${INSTALL_PATH}/bin/node /usr/local/bin/node
ln -s ${INSTALL_PATH}/bin/npm /usr/local/bin/npm
ln -s /usr/local/bin/node /usr/bin/node
ln -s /usr/local/bin/npm /usr/bin/npm
rm -rf /usr/local/bin/cnpm
rm -rf /usr/bin/cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
ln -s ${INSTALL_PATH}/bin/cnpm /usr/local/bin/cnpm
ln -s /usr/local/bin/cnpm /usr/bin/cnpm
echo "start to install software: "
rm -rf /usr/local/bin/node-gyp
rm -rf /usr/bin/node-gyp
cnpm install node-gyp -g
ln -s ${INSTALL_PATH}/bin/node-gyp /usr/local/bin/node-gyp
ln -s /usr/local/bin/node-gyp /usr/bin/node-gyp
rm -rf /usr/local/bin/pm2
rm -rf /usr/bin/pm2
cnpm install pm2 -g
ln -s ${INSTALL_PATH}/bin/pm2 /usr/local/bin/pm2
ln -s /usr/local/bin/pm2 /usr/bin/pm2
rm -rf /usr/local/bin/express
rm -rf /usr/bin/express
cnpm install express-generator -g
ln -s ${INSTALL_PATH}/bin/express /usr/local/bin/express
ln -s /usr/local/bin/express /usr/bin/express
rm -rf /usr/local/bin/hexo
rm -rf /usr/bin/hexo
cnpm install hexo -g
ln -s ${INSTALL_PATH}/bin/hexo /usr/local/bin/hexo
ln -s /usr/local/bin/hexo /usr/bin/hexo
rm -rf /usr/local/bin/forever
rm -rf /usr/bin/forever
cnpm install forever -g
ln -s ${INSTALL_PATH}/bin/forever /usr/local/bin/forever
ln -s /usr/local/bin/forever /usr/bin/forever
rm -rf /usr/local/bin/mocha
rm -rf /usr/bin/mocha
cnpm install mocha -g
ln -s ${INSTALL_PATH}/bin/mocha /usr/local/bin/mocha
ln -s /usr/local/bin/mocha /usr/bin/mocha
rm -rf /usr/local/bin/grunt
rm -rf /usr/bin/grunt
cnpm install grunt-cli -g
ln -s ${INSTALL_PATH}/bin/grunt /usr/local/bin/grunt
ln -s /usr/local/bin/grunt /usr/bin/grunt
rm -rf /usr/local/bin/supervisor
rm -rf /usr/bin/supervisor
cnpm install supervisor -g
ln -s ${INSTALL_PATH}/bin/supervisor /usr/local/bin/supervisor
ln -s /usr/local/bin/supervisor /usr/bin/supervisor
rm -rf /usr/local/bin/node-dev
rm -rf /usr/bin/node-dev
cnpm install node-dev -g
ln -s ${INSTALL_PATH}/bin/node-dev /usr/local/bin/node-dev
ln -s /usr/local/bin/node-dev /usr/bin/node-dev
rm -rf /usr/local/bin/node-inspector
rm -rf /usr/bin/node-inspector
cnpm install node-inspector -g
ln -s ${INSTALL_PATH}/bin/node-inspector /usr/local/bin/node-inspector
ln -s /usr/local/bin/node-inspector /usr/bin/node-inspector
rm -rf /usr/local/bin/sails
rm -rf /usr/bin/sails
cnpm install sails -g
ln -s ${INSTALL_PATH}/bin/sails /usr/local/bin/sails
ln -s /usr/local/bin/sails /usr/bin/sails
rm -rf /usr/local/bin/pomelo
rm -rf /usr/bin/pomelo
cnpm install pomelo -g
ln -s ${INSTALL_PATH}/bin/pomelo /usr/local/bin/pomelo
ln -s /usr/local/bin/pomelo /usr/bin/pomelo
ls -la /usr/local/bin/
ls -la /data/nodejs/bin/编写 Dockerfile 文件
使用 Dockerfile 文件将 centos&安装脚本&node 安装包组合起来
FROM centos:latest
RUN yum install epel-release -y
RUN mkdir -p /data/software/node/
COPY install_nodejs.sh /data/software/node/
COPY node-v5.0.0-linux-x64.tar.gz /data/software/node/
RUN cd /data/software/node/ && sh install_nodejs.sh使用编译语句将 Dockerfile 编译成镜像
docker build -t node-dev .
docker images使用编译好的 node-dev:latest 镜像
依据我们构建好的 node-dev 来构建工程
Dockerfile:
FROM node-dev:latest
RUN mkdir -p /data/projects/mobile
COPY . /data/projects/mobile
RUN cd /data/projects/mobile && cnpm install -d
EXPOSE 18403
CMD ["node", "/data/projects/mobile/app.js"]
Shell Command:
docker build -t mobile .这样, 测试一下使用(-t –tty):
docker run -t --name mobile -d mobile会看见控制台输出 log, 我的项目由于依赖了 mongo 数据库 127.0.0.1:27017, 会一直提示连接出错…
至此 nodejs 环境, 代码部署完成.
创建 mongo 数据库
mongo 使用官方集成环境
docker pull mongo启动测试用例
docker run -p 27000:27017 --name mongodb -d mongo
netstat -lntp | grep 27000将容器连接起来
删掉刚刚启动的 mobile 容器
docker stop mobile
docker rm xxxxxxxxxxxx重新构建 mobile 容器, 与 mongodb 联结: –link plugin_name:alias
docker run -p 127.0.0.1:18403:18403 --link mongodb:mongodb -t --name mobile -d mobilePS: 联结好之后, 如果想在 mobile 中访问 mongodb, 直接使用 IP 地址是不行的,
因为 mongodb 的 IP 地址是无法确定的, 但是在做联结的时候, 会在 mobile 的/etc/hosts 目录中,
增加一个记录例如
10.1.12.6 mongodb
含义是增加了访问 mongodb 的 hosts, 现在在 mobile 中访问 mongodb: mongodb://mongodb:27017/dbname 即可~
所以, 要提前在 mobile 中, 将数据库地址”127.0.0.1”更改为”mongodb”.