giftman / docker_test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

# Docker开发环境

[高质量Node.js微服务的编写和部署](http://mp.weixin.qq.com/s?__biz=MzAwODE0NDE0MA==&mid=2652773063&idx=2&sn=1db80ad8e95349e38224cf8fbf4057ef&scene=1&srcid=0805MkUS3rhRaI5qOko1WJDp#wechat_redirect)

被上面的文章带坑了

在时速云测试自动构建及自动上传时注册构建填的master ,创建容器时也是master分支即可

昨天构建成功最后一步buffering to disk出错估计是时速云问题,隔天就好了。

[github地址](https://github.com/giftman/docker_test)

### Usage

#### Dockerfile

> node 现在用的是6.5,直接替换为4.5.0..这些就可以

```shell
FROM sameersbn/ubuntu:14.04.20160827
MAINTAINER chufan@qq.com

RUN  \
  cd /opt && \
  wget http://nodejs.org/dist/v6.5.0/node-v6.5.0-linux-x64.tar.gz && \
  tar -xzf node-v6.5.0-linux-x64.tar.gz && \
  mv node-v6.5.0-linux-x64 node && \
  cd /usr/local/bin && \
  ln -s /opt/node/bin/* . && \
  DEBIAN_FRONTEND=noninteractive npm install -g nodemon --no-optional && \
  sudo ln -s /opt/node/lib/node_modules/nodemon/bin/nodemon.js /usr/bin/nodemon && \
  rm -f /opt/node-v6.5.0-linux-x64.tar.gz

WORKDIR   /src

CMD ["/bin/bash"]
```

#### Start

```shell
docker build -t winfan/node-dev .
docker run -i -t --rm \      
      -p 3000:3000 \
       -v `pwd`:/src \
       winfan/node-dev
```

``` 
#add nodemon for dev
npm install -g nodemon
```
启动应用
```
nodemon app.js
```

一旦把镜像构建好了,我们就可以使用下面的语句运行一个容器了:

让我们来看一看docker运行命令中发生了什么.

-i 会在交互模式下启动容器(对比 -d 是在分离模式下). 这就意味一旦交互会话结束,容器就会退出.
-t 会分配一个pseudo-tty.
--rm 会在退出时移除容器及其文件系统.
-p 3000:3000 会将主机上的端口 3000 转发到容器上的端口3000.
-v `pwd`:/src
这句将会将当前的工作目录挂载到主机上(例如,我们的项目文件)容器中的 /src 里面. 我们将当前目录作为一个卷挂在,而不是使用Dockerfile中的ADD命令,那样我们在文本编辑器中做的任何修改都可以立即在容器中看到了.
winfan/node-dev 是要运行的docker镜像的名称和版本 – 这跟我们用来构建docker镜像时使用的名称和版本是相同的.

由于Dockerfile指定了CMD ["/bin/bash"], 容器一启动,我们就会登录到一个bash shell环境中.


### Base Image 
- [x] Ubuntu (fork sameersbn/ubuntu add node and nodemon)

- [ ] node-argo 官方发布
- [ ] apline publish

### Reference
* 基于 Docker 开发 NodeJS 应用
* [高质量Node.js微服务的编写和部署](http://mp.weixin.qq.com/s?__biz=MzAwODE0NDE0MA==&mid=2652773063&idx=2&sn=1db80ad8e95349e38224cf8fbf4057ef&scene=1&srcid=0805MkUS3rhRaI5qOko1WJDp#wechat_redirect)

About

License:MIT License


Languages

Language:JavaScript 100.0%