SlideShare una empresa de Scribd logo
1 de 124
Descargar para leer sin conexión
Bo-Yi Wu
LaravelConf @ 2017.07.01
1
—  聯聯發科技後端⼯工程師
—  DevOps
—  Golang, PHP, Node.js ..
—  維護數個 Go 開源專案
—  Gitea
—  Gin
—  Drone
—  appleboy @GitHub
—  appleboy @twitter
—  appleboy @slideshare
—  appleboy46 @facebook
2
開發 測試	 部署	
Develop CI CD
4
https://labs.mediatek.com/en
資料庫	
主站	
主站	
資料庫	
資料同步
6	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
7	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
8	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
9
https://laravel.com/docs/5.4/homestead
10
— 安裝 VirtualBox
— 安裝 Homestead
— 修改設定檔
— ⽬目錄分享
— 設定 Nginx
— 多專案設定
— 安裝資料庫 (MySQL or Postgres?)
— …………….
11
12
你不該讓同事踏入 Homestead
13
14
15
16
17
18
19
20	
後端 *	2	 前端 *	1	 測試 *	1	 管理理 *	1
Docker 基礎介紹與實戰
21	
https://www.slideshare.net/appleboy/docker-61214768
docker-compose
22
docker-compose -p $(PROJECT) up -d
23
docker-compose -p $(PROJECT) stop
24
docker-compose -p $(PROJECT) ps
25
docker-compose -p $(PROJECT) down
26
docker exec $(container) php artisan migrate
27
docker-compose -p $(PROJECT) 
build --no-cache $(container)
28
docker-compose exec
$(container) /bin/bash
29
30
31	
http://laradock.io/
32	
超多種 Container 讓你選
資料庫	
主站	
主站	
資料庫	
資料同步
34
35
36	
Nginx Docker
37
38
39
40
41
42
43
44
45
46
.env
47
48	
docker-compose.yml
49
50
51
52	
讀取專案 git clone
修改設定 .env
啟動 Docker
安裝 PHP 套件
安裝 Node 套件
編譯前端套件
執⾏行行 DB Migration
53	
讀取專案 git clone
修改設定 .env
啟動 Docker
安裝 PHP 套件
安裝 Node 套件
編譯前端套件
執⾏行行 DB Migration
重複動作
vendor or node_modules
54
55
56	
編輯 composer.json
57
yarn config set cache-folder .yarn-cache
58
59	
修改 package.json
60
61
62
63
64	
http://epicentre.co.uk/testing-services/test2/
65
66
開發 測試	 部署	
Develop CI CD
68
前端測試	
69	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
前端測試	
70	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
Github Flow vs Git Flow
71
72	
Develop
Git Push
Git Tag
Develop
Git Push
Git Tag
Testing
Deploy
Deploy
Deploy
Production
Staging
Production
Testing
Deploy
Staging
CI / CD ⾃自動化測試及部署
73
74	
Jenkins Drone Gitlab CI
75	
Jenkins Gitlab CI
76
基於容器 (Container) 技術的 CI/CD 系統
77
Everything is a Docker Container
	
78
79
.drone.yml
80
前端測試	
81	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
82	
讀取專案	
git clone https://
83	
Git tag ⼀一併下載
前端測試	
84	
讀取專案
85	
定義步驟
86	
定義步驟	
選擇映像檔
87	
定義步驟	
選擇映像檔	
執⾏行行命令
前端測試	
88	
讀取專案	
後端測試
89
90	
服務名稱	
服務名稱	
服務名稱
91	
群組測試	
執⾏行行命令	
定義步驟
92	
服務名稱
減少測試時間,提⾼高效率	
93
Drone Workspace
Clone 步驟 Build 步驟 Deploy 步驟
建立快取使⽤用快取
雲端儲存
95	
使⽤用快取
plugin image
96	
建立快取
plugin image
[skip cache] or [cache skip]
97
前端測試	
98	
讀取專案	
後端測試	
打包檔案
99	
plugin image
多台主機
部署條件
前端測試	
100	
讀取專案	
後端測試	
打包檔案	 部署機器
101	
plugin image
多台主機
部署條件
前端測試	
102	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
103	
⾃自訂訊息
秘密變數
前端測試	
105	
讀取專案	
後端測試	
消息通知
前端測試	
106	
讀取專案	
後端測試	
打包檔案	 部署機器	 消息通知
107
108
https://github.com/go-training/drone-laravel-example
109
110
任何語⾔言都可以寫 Plugin
PHP, Ruby, Bash, Go, Python …
⾃自訂參參數	
⾃自訂參參數	
⾃自訂參參數
前置符號 PLUGIN_
https://github.com/appleboy/drone-php-curl
121
http://bit.ly/oneday-devops
	
122
123
謝謝⼤大家參參與	
124

Más contenido relacionado

La actualidad más candente

Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
Julien Pivotto
 

La actualidad más candente (20)

以自動化先行的 DevOps 實踐經驗分享
以自動化先行的 DevOps 實踐經驗分享以自動化先行的 DevOps 實踐經驗分享
以自動化先行的 DevOps 實踐經驗分享
 
Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackUbuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
 
用 Go 語言 打造微服務架構
用 Go 語言打造微服務架構用 Go 語言打造微服務架構
用 Go 語言 打造微服務架構
 
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについて
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
AndroidアプリのKotlin移行時に遭遇した問題と対処例
AndroidアプリのKotlin移行時に遭遇した問題と対処例AndroidアプリのKotlin移行時に遭遇した問題と対処例
AndroidアプリのKotlin移行時に遭遇した問題と対処例
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ
 
DevOps
DevOpsDevOps
DevOps
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 

Destacado

Destacado (18)

2012 Joomla Taiwan Joomla 購物車 VirtueMart 功能介紹 鼎益盛_AJ
2012 Joomla Taiwan Joomla 購物車 VirtueMart 功能介紹 鼎益盛_AJ2012 Joomla Taiwan Joomla 購物車 VirtueMart 功能介紹 鼎益盛_AJ
2012 Joomla Taiwan Joomla 購物車 VirtueMart 功能介紹 鼎益盛_AJ
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
使用者認證
使用者認證使用者認證
使用者認證
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 

Similar a 運用 Docker 整合 Laravel 提升團隊開發效率

使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
Zhen Li
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
Zhen Li
 

Similar a 運用 Docker 整合 Laravel 提升團隊開發效率 (20)

用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
 
Bitbucket pipeline CI
Bitbucket pipeline CIBitbucket pipeline CI
Bitbucket pipeline CI
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
Git安裝
Git安裝Git安裝
Git安裝
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率使用Samba提升linux平台开发效率
使用Samba提升linux平台开发效率
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 Library
 

Más de Bo-Yi Wu

Más de Bo-Yi Wu (20)

Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in Golang
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Drone 1.0 Feature
Drone 1.0 FeatureDrone 1.0 Feature
Drone 1.0 Feature
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD Platform
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in GoGorush: A push notification server written in Go
Gorush: A push notification server written in Go
 
Introduction to Gitea with Drone
Introduction to Gitea with DroneIntroduction to Gitea with Drone
Introduction to Gitea with Drone
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務
 
用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot用 Go 語言打造 DevOps Bot
用 Go 語言打造 DevOps Bot
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaA painless self-hosted Git service: Gitea
A painless self-hosted Git service: Gitea
 
Write microservice in golang
Write microservice in golangWrite microservice in golang
Write microservice in golang
 
Git flow 與團隊合作
Git flow 與團隊合作Git flow 與團隊合作
Git flow 與團隊合作
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel framework
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
Git Flow and JavaScript Coding Style
Git Flow and JavaScript Coding StyleGit Flow and JavaScript Coding Style
Git Flow and JavaScript Coding Style
 

運用 Docker 整合 Laravel 提升團隊開發效率