用 Docker 建立 Laravel 的開發環境

在 2016/03/03 及 2016/03/09 的 Laravel news 分別介紹了 laraedit-docker 及 LaraDock。 Laravel News 的這個舉動似乎引爆了 Laravel 圈內的 Docker 熱潮(我自以為引爆啦),所以藉這個機會也來聊一聊「如何用 Docker 建構出適合 Laravel 的開發環境」這題目。 既然目標是建構開發環境,首先當然要先問 Laravel 的開發環境需求為何? 根據官網我們可以得知,Laravel 5.2 對環境的需求為: 根據官網文件 https://laravel.com/docs/5.2#server-requirements 這裡面主要的需求是 PHP 版本及 Extension,Laravel 需求爲 PHP >= 5.5.9。那除了 PHP 之外,我們還要預備哪些軟體?我們只好同時參考一下官方的 homestead 看看它安裝了哪些軟體: 根據官網文件得知 homestead 已安裝上述軟體 將上述內容整理並精簡之後,規劃出我個人認為所需的基本環境需求如下: PHP 5.5.9 Nginx Mysql Beanstalkd Composer 有了需求,接著就開始用 Docker 建置。 關於 Docker 要如何安裝,可直接參閱 Docker 官方網站,那裡有豐富的文件可以參考,不管你是哪一種 OS 官方都有提供安裝步驟,再不然網路上也有很多教學文章可參考,所以我就不再重複說明了。 如果是 Mac OS 可以考慮使用早期比較多人用的 Boot2docekr 或已被 Docker 官方收購並包入 Docker Toolbox 的 Kitematic,再不然也可以考慮使用 docker-machine。...

March 20, 2016 · Cheng Wei Chen

iThome Container Summit 2015 筆記 | 談 Docker 對傳統 DevOps 工具鏈的衝擊 - 葉秉哲

延續去年的盛況,今年 iThome 再次舉辦了 Container Summit。當舉辦的消息剛釋出時,本來是沒有太多興趣的,是一直等到議程公佈,發現有邀請了數位國外講師,包含 Mesos、Rancher 及 DaoCloud⋯⋯等,才改變心意,立馬向公司申請公差決定要來好好朝聖一番。 這次的議程我覺得可以分成三種類型,分別是「大師推坑」、「觀念分享」及「就是來賣產品」。因此並非每一場都需要做詳細的筆記,有些場次只有幾個重點需要記錄,剩下的時間都是在欣賞講者的推坑功力,看看能不能順利讓聽眾們買單。 這次「小城故事不多-科技部」以團體戰術在第一時間就釋出了各場重點筆記,有興趣者可以直接參閱他們的兩篇筆記文,內含每一場的重點筆記。 https://smalltowntechblog.com/2015/12/10/ithome-container-summit-day-1/ https://smalltowntechblog.com/2015/12/11/ithome-container-summit-day-2/ 在這一次的 Container Summit 2015,iThome 依然邀請了葉秉哲(以下簡稱:葉大)為大家分享議程,這次葉大同樣帶來一場屬於「觀念分享」的題目「擁抱或對抗?談 Docker 對傳統 DevOps 工具鏈的衝擊」。 簡報已釋出,可直接線上瀏覽。 開場葉大先用幾則笑話調侃了一下 DevOps 的現況,基本上就是 DevOps 的定義問題、DevOps 涵括太多的領域及 DevOps 的工具種類與數量多而繁雜。 有鑒於 DevOps 目前的現況,因此若想要在一場分享中介紹這麼多 DevOps 相關的內容是不可能的,必須換個角度思考,只能針對有限的關鍵問題分享。 那麼到底在實際面上 DevOps 切身相關的問題是什麼? 於是葉大借用了 Brian Brazil 在文章中提出的三個嚴肅的問題來回答。這三個問題分別是: How to recreate your system(如何重建你的系統 ) How to safely change your system(如何安全地改變你的系統) When something has gone wrong(你有辦法知道系統出狀況並解決它) 相信 Ops 一定會立刻認同這三個問題的重要性,因為不論是重新打造或修復重建系統,系統建立是 Ops 最基本的關鍵工作。 而系統建立之後,還會遇到需求變更或軟體升級⋯⋯等原因導致系統必須被改變。 最後即便放了綠色乖乖也不代表系統永遠不會出問題,因此系統監測絕對是第三項不可缺少的關鍵項目。 可以說對 Ops 而言若想要提供一個穩定的系統,這三項是絕對逃不了的關鍵問題。所以在談更多 DevOps 的內容之前,不如先好好的討論這三個問題。...

January 4, 2016 · Cheng Wei Chen

在 Synology NAS 上用 docker 運行 php-cli

不曉得該怎麼替本篇內容命名文章標題,所以最後索性直接拿關鍵字當作標題,就讓我偷懶一回吧。 最後還是改了一個標題,因為之後寫的文章可有能會提到這一篇。 公司新添購了一台 Synology NAS 型號為 DS1515+,明眼人一看這型號應該就明白,這是一台可以運行 Docker 的 Synology NAS。Synology NAS 其實原本就已經可以安裝各種套件,讓使用者享受一機多用的好處。現在變本加厲能直接運行 Docker,這根本是意圖叫人不要把 NAS 當成純粹的 NAS 來使用。 (若想要查詢哪些 Synology NAS 可以運行 Docker 可以參閱 Synology 網站。) 既然廠商如此用心良苦,意圖叫人惡搞善用他們家的產品,我們當然恭敬不如從命。基本上既然可以運行 Docker,那麼其實大部分 Server 能做的事情都有機會可以轉移至 NAS 上,所以首先我便打算在上面運行一個 Container 來取代既有的 Raspberry pi。 預定的使用情境大概如下,我們有一檯 Raspberry pi 在運行 cron,它會替我們定時定期執行一些工作,工作的程式是用 php 編寫,透過 php cli 來執行。由此若要轉移這個工作,所需最簡單的環境就是一個有 php cli + cron 的 Container 即可。 因為已經有許多人分享如何在 Synology NAS 上安裝 Docker,因此本文就不再重述,只能說安裝流程非常簡單,只要滑鼠點幾下即可,沒有任何難度可言。使用 Docker 也與安裝一樣簡單,只要透過管理界面點幾下,很容易就能下載 Images,並運行 Container。 如此一來剩下的麻煩事就只有該如何做出一個有 php cli + cron 的 Container 呢?...

November 9, 2015 · Cheng Wei Chen

2015 Cloud & Datacenter EXPO 心得兼筆記文 (下)

本系列心得兼筆記文的最後一篇,即是 2015 Cloud & Datacenter EXPO 下午 DevOps & App 此條議程線的第四、五兩場議程。 上篇傳送門:2015 Cloud & Datacenter EXPO 心得兼筆記文 (上) 中篇傳送門:2015 Cloud & Datacenter EXPO 心得兼筆記文 (中) Docker’s Impact on Data Center Industry - Docker Taipei Meetup 共同發起人 / 郭韋廷 第四場雖然題目是「Docker’s Impact on Data Center Industry」,不過我個人覺得內容其實並未超出 Docker Introduction 的範圍,所以下面就僅用簡短的篇幅記錄。 首先郭韋廷先用了兩種困擾的情境作為開場,帶領聽眾體驗一種擾人的狀況,藉此突顯 Docker 所能帶來的好處。 第一個情境是舊版軟體往往只能安裝在舊的 OS,但是時過境遷,即便能找到舊 OS 、舊軟體及軟體所需的舊版 Library,也不代表一定能順利安裝。接著繼續延伸情境,假設要安裝的舊軟體又有數個版本,也許 A、B 兩版本的 Library 可能不盡相同,因此無法 A、B 同時安裝,會發生 Library 衝突問題,試問這該如何是好? 第二情境則是幫正妹架設 Blog,需要安裝 Apache、Mysql、PHP 及 Wordpress,一開始自已先在 Windows 環境測試安裝,但到正妹宿舍時才發現正妹電腦是 MAC,這該如何是好?延伸情境,假設正妹大紅大紫了,Blog 要搬家到一般的 VPS (Linux),又是另一種安裝環境。最終假設正妹爆紅了,這下要從 VPS 搬到 AWS 環境,於是又出現另外一種新的安裝環境了。四個需要安裝的軟體 Apache、Mysql、PHP 及 Wordpress 乘以四種安裝情境,面對有可能在任一個組合中踩到安裝地雷,試問這又該如何是好?...

June 21, 2015 · Cheng Wei Chen

利用 Docker 建構 Nginx + php-fpm 5.2 + mysql

Docker 的熱潮不用說明,大家都已經耳熟能詳,最近也有越來越多的 Production 案例出現,前一陣子更已推出 1.6 版,我個人的評估認為現在是一個滿好的時間點,可以由資訊收集、觀望,轉變進入測試及實用。 於是決定就用 php 常見的一個問題來當作我個人第一個 Docker 實作的題目, 那就是「如何建立一個舊版本的 php 工作環境」 評估環境需求 首先評估舊專案環境需求,發現舊專案只能運行在 php 5.2 的環境,在伺服器上要安裝舊版本 php 其實已經有好幾種解法,但既然要改用 Docker 來實現,於是思考的方向便偏向希望能將 php 5.2 獨立運行在一個 container 之中, 於是環境需求便規劃為 Nginx + php-fpm 5.2 + mysql。 安裝 Docker 如何安裝 Docker 這基本動作已經有太多教學文件可以參考,其實直接看官網文件就已足夠。 取得 image 正式實作的第一步驟當然是先搜尋有沒有前人已經建立好的 Docker repository 可以直接運用。 基本上只要在 Docker hub 搜尋 php、phpfpm、php 5.2…或其他相關的關鍵字,會跑出來的 repository 多到不可數,稍微評比之後,選用 helder/php-5.2 作為我的 php image。 會選擇它有幾個原因: 作者有提供原始的 Dockerfile,假如不滿意,還可以自己微調再重新 build。 這是 php-fpm,可以單獨運行為一個 service。 被下載次數有破百,代表還算有些人氣,通常有人氣的東西比較不會有問題。(非絕對,使用前還是要自行判斷。) 有了 php,接著還需要 mysql 及 Nginx,一樣的做法直接上 Docker hub 搜尋,這次就直接選用官方建立的 mysql 及 Nginx repository。...

May 1, 2015 · Cheng Wei Chen