如何使用 Docker-Compose 编排 Nodejs 项目?
2018-02-13 by dongnan
目标
承接上篇文章,当有了自定义的 nodejs 应用镜像,接下来可以通过 docker-compose 来编排应用。
这里演示的项目包括: 一个 web 服务,以及一个 DB 服务。
环境
请参考 如何使用 Docker 创建 Nodejs 容器? 这篇文章。
docker-compose 文件
cat node/docker-compose.yml
version: '2'
services:
  node-app:
    image: my-node:0.0.1
    container_name: node-app
    volumes:
      - web-data:/app
    environment:
      - CID=node-app
    ports:
      - 8888:8888
    links:
      - node-db
  node-db:
    image: mysql
    container_name: node-db
    volumes:
      - /etc/localtime:/etc/localtime
      - db-data:/var/lib/mysql
    environment:
      - TZ=Asia/Chongqing
      - MYSQL_DATABASE=node-db
      - MYSQL_USER=crm
      - MYSQL_PASSWORD=MyNodePasswd
      - MYSQL_ROOT_PASSWORD=MyNodePasswd
    command:
      --character-set-server=utf8
      --collation-server=utf8_general_ci
      --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
volumes:
    db-data:
      driver: local
    web-data:
      driver: local
项目结构
tree node/
node/
├── docker-compose.yml
├── Dockerfile
└── src
    └── server.js
1 directory, 3 files
创建项目
docker-compose up -d
# ...省略
Creating node-db
Creating node-app
验证
docker-compose ps
  Name                Command               State           Ports          
--------------------------------------------------------------------------
node-app   node /app/server.js              Up      0.0.0.0:8888->8888/tcp
node-db    docker-entrypoint.sh --cha ...   Up      3306/tcp
参考
- 如何使用 Docker 创建 Nodejs 容器?
- https://hub.docker.com/_/node/
- https://github.com/nodejs/docker-node/blob/master/README.md#how-to-use-this-image