docker是目前大红大紫的云计算技术,它极大的简化项目的部署并提高计算资源的利用率;同样,它也能用于项目的开发,提高代码的开发效率。
用docker进行项目开发的优点
- 不会污染当前环境,包括环境变量和临时文件。
- 方便得进行第三方库的版本管理,例如可以分别构建go1.7和go1.8的docker image,编译的时候只用切换docker image就可以实现用不同的go版本进行代码编译。
- 团队合作中,可以方便地保证大家使用的编译环境是一样的,避免了很多不必要的问题。
用docker进行开发的具体实现步骤
以lowtea为例子,介绍如何用docker进行项目开发。
构建docker image
前端docker image的Dockerfile,构建出前端运行环境image。
FROM hub.c.163.com/library/node:6.10.0
MAINTAINER zhongxuqi
RUN npm install -g bower && npm install -g gulp && mkdir /workspace
WORKDIR /workspace
后端docker image的Dockerfile,构建出后端运行环境的image。
FROM hub.c.163.com/library/golang:1.7.4
MAINTAINER zhongxuqi
RUN mkdir /golang && export GOPATH=/golang && mkdir /workspace
WORKDIR /workspace
编写Makefile
SHELL=/bin/bash
lowtea-frontend:
cd lowtea/front && npm install && gulp serve
docker-lowtea-frontend:
cd lowtea/front && npm install && gulp serve -p http://lowtea-backend:7070
lowtea-backend:
cd lowtea && source env.sh && make run
编写docker-compose.yml
base-dc.yml
version: "2"
services:
mongodb:
image: hub.c.163.com/library/mongo
ports:
- "27017"
default-dc.yml
version: "2"
services:
lowtea-backend:
image: "hub.c.163.com/zhongxuqi/go-base:latest"
ports:
- "7070:7070"
external_links:
- mongodb
volumes:
- /Users/zhongxuqi/ProjectFiles/github:/workspace
working_dir: /workspace
command: bash -c "make lowtea-backend"
lowtea-frontend:
image: "hub.c.163.com/zhongxuqi/frontend-base:latest"
ports:
- "3000:3000"
- "3001:3001"
volumes:
- /Users/zhongxuqi/ProjectFiles/github:/workspace
working_dir: /workspace
links:
- lowtea-backend
command: bash -c "make docker-lowtea-frontend"
启动服务
docker-compose -f base-dc.yml up -d
docker-compose -f default-dc.yml up -d