Using Docker Compose in Node.js Project

Why use Docker Compose?


Docker 到底有什么优点吸引我们?

  • Build:允许自由组合各种服务来构建我们的应用,避免**开发**和**生产之间的环境问题,并且不局限在任何平台和语言
  • Ship:通过统一的用户接口,管理,设计应用开发、测试、发布的生命周期
  • Run:可以快捷地在多个平台,发布可扩展、安全、可靠的服务

Use it!

说了这么多,那就让我们玩起来!

0. Install Docker Tools

  • Docker — 开源的容器应用引擎
  • Machine — 管理本地、云服务提供商中的 Docker 服务
  • Compose — 定义,组合,运行多个容器应用
* 如果是 Mac OS X 用户,请先安装 Virtualbox `brew cask install virtualbox`。
* 如果不喜欢 Docker CLI 工具,也可以安装 Kitematic,Kitematic 是 Docker 的 GUI 管理工具。

1. Create Node.js Project

  • server.js
  • package.json

2. Machine:在 virtualbox 中创建 Docker Host

3. Compose:定义及操作

为项目创建 Dockerfile

  • Dockerfile

创建 docker-compose.yml 来组合 Node.js, Redis, Mongodb 服务

  • docker-compose.yml

测试、访问我们的服务 :rocket:

关闭服务,休息下

* Compose 的前身是 fig。
* `up` `start` `logs` `stop` `rm` 等 COMMANDs 可以针对某个 Container 使用 e.g: `$ docker-compose logs app`
* 如果 Node 项目比较大,依赖的模块较多,频繁改动,我们可以不需要创建 Node 项目本身的 Container,只需要创建启动其他服务即可。

其他工具

* Vargant — 也是一款环境构建工具,比 Docker 还早

Vargant 是一款不错的工具,可以帮助我们快速搭建各种服务环境,也能团队之间进行分享,现在基于它的工具链也越来越丰富,感兴趣也可以一试。

* 不用其他构建工具,我们自己搭

“自己动手,丰衣足食” - 不依赖环境构建工具,自己搭,时间精力充足的化,不妨一试,会收获更多。

最后

Docker 可玩的不仅仅如此,还可以打包、发布容器应用到线上,构建自己的 Paas(dokku) 服务等。
Docker Compose 也可以有更高级玩法。

Enjoy!

Relates

* https://docs.docker.com/kitematic/
* https://docs.docker.com/installation/mac/
* https://docs.docker.com/machine/install-machine/
* https://docs.docker.com/compose/install/
* https://github.com/mhart/alpine-node
* https://github.com/progrium/dokku

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.