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

Post on 21-Apr-2017

5.706 views 2 download

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

從軟體開發⾓角度談 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?

find more services : https://registry.hub.docker.com/

atomic

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