從軟體開發⾓角度談 Docker 的應⽤用
about me• JAVA: 6 years• JS: 1 year• blog• linkedin• github• twitter
版本控制
對開發⼈人員本⾝身來說
why need version control• 溝通• 合作• 可讀性• 回朔• 版本切換• 版本發佈• 同步
source version control
database version control
Environment version control
溝通
跟開發⼈人員合作
開發者與開發者之間• Spec. 規格實例化• 規格的釐清• 確認需求• 前後端整合• 第三⽅方 API 串接
開發者與資料庫管理者• ORM Model• schema• 資料庫效能調教• 資料庫正規化• 報表製作
開發者與維運⼈人員
DevOps
開發⼈人員 維運⼈人員
• 系統環境規格• deploy 的⽅方式• production 環境建置• development 環境建置• 環境異常釐清
開發者 維運⼈人員
DockerBuild Ship Run Anything JAVAWrite once, run anywhere
why use docker?
productiondevelopment
developer A developer B
OSX UBUNTU
same environment
switch version
switch environment mode
想要同時擁有
開發者 維運⼈人員
docker hub
use Dockerfile
reusable
ubuntu 14.04
ruby and nodejs
sails framework
ubuntu 14.04
ruby and nodejs
loopback
extendable
ubuntu 14.04
ruby and nodejs
sails frameworkFROM smlsunxie/rudy-node:latest …
readable
ubuntu 14.04
ruby and nodejs
sails frameworkFROM smlsunxie/rudy-node:latest
RUN gem install compass RUN gem install bootstrap-sass
RUN npm install -g grunt-cli RUN npm install -g bower RUN npm install -g coffee-script RUN npm install -g sails
Build Ship Run Anything
all about dockerpush
我想要
清楚好⽤用⼜又快速的...
使⽤用 docker 搭配 fig 簡化設定
simple• docker pull mysql:latest• docker run \
-p 3306:3306 \-v /data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=root \mysql
docker
fig
easy
clear
dynamic• fig env document• 查詢所有環境變數:fig run SERVICE_NAME env
convenience
Mysql
Redis
2.8
5.7
one command start all services
mysql redis
myapp
MQ server
fig up myapp
docker hackathon
Mobius CMS
plugin base framework
base on TDD
https://github.com/smlsunxie/mobius-cms
CMS
modules
concept
plugin A
plugin B
CMS
modules
plugin indepand
run plugin
結論• 環境更統⼀一• 建置過程明確• 開發⼈人員與維運⼈人員可利⽤用 dockerfile 進⾏行溝通• 除了部署之外,docker 還有很多應⽤用• 再 fig 的幫助下,可以更有條理的使⽤用 docker