> 本文意在让你掌握极速搭建Node服务端(任何Project)node
```
$ whoami
name: kelvin
email: kelvv@outlook.com
homepage: www.kelvv.com
github: https://github.com/kelvv
```
****
本文利用Docker搭建一个预安装好:
* pm2 -- Node应用的进程管理器
* git -- 代码管理
* ssh -- 远程登陆
* nvm -- node版本管理
* npm -- node包安装
* node -- So,you knowgit
**本项目github:[Here](https://github.com/kelvv/nvmhome-docker)** , 欢迎Startgithub
**> 固然可直接使用该镜像:**
```
$ docker pull kelvv/nvmhome-docker
```docker
****npm
该项目由一份Dockerfile和.bashrc组成:
```
#Dockerfileubuntu
FROM ubuntu:14.04 bash
RUN apt-get update
#安装git ssh
RUN apt-get install -y curl git-all openssh-server
ADD .bashrc /root/.bashrc服务器
#nvm安装
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
RUN . /root/.bashrc;nvm install 4.3.1;nvm use 4.3.1;npm install pm2 -g;pm2 startup ubuntu
RUN mkdir /var/run/sshd
RUN echo 'root:myssh' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_configsession
# SSH登陆
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshdapp
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
#对外开放端口
EXPOSE 22
EXPOSE 80
#启动ssh服务
CMD ["/usr/sbin/sshd", "-D"]
```
上面给出了简单的注释,下面补充说明一下
1. ADD .bashrc /root/.bashrc 为何须要把.bashrc添加进去呢?由于里面把**互动**去掉,这样pm2环境变量才能生效。
2. 默认ssh的密码为:'myssh',若有须要,自行添加ssh无密登陆,我对该技术有文章:[传送门](http://www.jianshu.com/p/27d8b8d1d571)
3. 该镜像对外开放两个端口,
* **22: ssh端口**
* **80: 默认网站端口**
4. 你们能够以该Dockerfile为基础,继续写属于本身应用的Dockerfile。Happy Node
##使用
* 使用该镜像
链接到服务器,执行如下命令
```
$ docker pull kelvv/nvmhome-docker
$ docker run -p 0.0.0.0:3000:22 -p 0.0.0.0:80:80 -d kelvv/nvmhome-docker
```
你能够回到本身的电脑,使用ssh root@xxx.xxx.xxx.xxx链接到刚建立的应用服务端,自由发挥。
* 对该镜像有改进,需从新构建
链接到服务器,下载Dockerfile,修改后执行如下命令
```
$ docker build -t name .
$ docker run -p 0.0.0.0:3000:22 -p 0.0.0.0:80:80 -d name
```
##总结
以上已经创建好基础,下一篇文章会说说:如何使用nvmhome+pm2,一键发布、管理本身的应用,,是一个很简单的我的主页,但愿大家喜欢!
个人我的主页就是这样部署的:[Homepage传送门](http://www.kelvv.com/)