從軟體開發⾓角度 
談 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 環境建置 
• 環境異常釐清
開發者維運⼈人員
Docker 
Build Ship Run Anything 
JAVA 
Write once, run anywhere
why use docker?
atomic 
find more services : https://registry.hub.docker.com/
same environment 
development production 
OSX UBUNTU 
developer A developer B
switch version
switch environment mode
想要同時擁有 
開發者維運⼈人員
docker hub
use Dockerfile
reusable 
sails framework 
ruby and nodejs 
ubuntu 14.04 
loopback 
ruby and nodejs 
ubuntu 14.04
extendable 
FROM smlsunxie/rudy-node:latest sails framework 
… 
ruby and nodejs 
ubuntu 14.04
readable 
FROM smlsunxie/rudy-node:latest sails framework 
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 
ruby and nodejs 
ubuntu 14.04
Build Ship Run Anything
all about docker 
push
我想要 
清楚好⽤用⼜又快速的...
使⽤用 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 
Redis 
Mysql 
2.8 
5.7
one command start all services 
mysql redis 
myapp 
MQ server 
fig up myapp
Mobius CMS 
docker hackathon
plugin base framework
base on TDD
https://github.com/smlsunxie/mobius-cms
CMS 
modules 
concept 
plugin A 
plugin B
plugin indepand 
CMS 
modules 
run plugin
結論 
• 環境更統⼀一 
• 建置過程明確 
• 開發⼈人員與維運⼈人員可利⽤用 dockerfile 進⾏行溝通 
• 除了部署之外,docker 還有很多應⽤用 
• 再 fig 的幫助下,可以更有條理的使⽤用 docker
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用

從軟體開發角度
談 Docker 的應用