在Mac上安裝和使用Docker搭建laravel環(huán)境

在Mac上安裝和使用Docker搭建laravel環(huán)境

  • 首先當然是下載docker, 推薦使用增強型brewbrew cask install docker安裝, 其實就是下載了這個文件, 你也可以自己下載這個文件進行手動安裝: https://download.docker.com/mac/stable/17661/Docker.dmg 滓玖。

  • 100MB出頭, 下載要點時間身坐。安裝成功后我們開始使用sudo docker version命令行測試操作, 成功的標志是終端返回docker服務(wù)端和客戶端版本信息, 另外請記住服務(wù)器上Docker的絕大多數(shù)命令都需要在root權(quán)限下執(zhí)行。絕大多數(shù)你想的docker配置信息都可以使用docker info來查看胁澳。

測試安裝是否成功
  • 由于Docker在2017年三月的大更新, 導(dǎo)致現(xiàn)在存在CE, EE和以前的Docker老版本, 如果直接使用yum, apt-get, brew install docker/docker.io/docker-io可能會下載到老版本。新版本要求linux內(nèi)核大于3.8幅疼。

  • 現(xiàn)在我們先cd到家目錄, 使用composer創(chuàng)建個laravel程序: composer create-project laravel/laravel example 徐钠。當然你也可以選擇使用git clone https://www.github.com/laravel/laravel.git下載源碼進行配置, 但是composer創(chuàng)建的好處在于它會自動幫你生成.env配置文件和加密key, 還會自動執(zhí)行composer install下載依賴(下載慢的話請配置過程compsoer全量鏡像)。

  • 下載完了我們進入這個目錄并使用php命令創(chuàng)建內(nèi)置的測試服務(wù)器: cd && sudo php -S localhost:8080 -t ./public, 然后訪問localhost:8080, 顯示laravel主頁則關(guān)閉php內(nèi)置服務(wù)器, 開始使用dockerfile路狮。(這一步驟使用php命令可能需要管理員權(quán)限, 使用php artisan serve不需要管理員權(quán)限)

  • 我們首先在下載laradock這個寫好dockerfile的一個文件夾: git clone https://www.github.com/laradock/laradock.git

  • laradock的官方文檔在這里, 但是很多使用講解不清楚, 出現(xiàn)問題建議查看github源碼托管所的Issues, windwos用戶使用就是各種坑, 一啟動mysql容器就會報錯, 那是因為windows的文件目錄結(jié)構(gòu)和Unix是不同的, 需要在配置文件中修改本地mysql數(shù)據(jù)保存路徑。windows下模擬的終端環(huán)境把盤符都掛在在/mnt目錄下, 所以并沒有真正的超級管理員權(quán)限, 使用docker會經(jīng)常碰到如搜索時權(quán)限不足, 內(nèi)存不足, docker重啟失敗, mysql容器啟動失敗, apache配置文件錯誤等等一系列問題, 我前幾天就是因為受不了這一點菜忍痛借錢買蘋果電腦蔚约。

  • 現(xiàn)在你的example和laradock都在~/目錄下, 那么現(xiàn)在進入laradock目錄執(zhí)行cp env-example .env生成環(huán)境的配置文件, 并修改.env文件中DB_HOST=mysql, REDIS_HOST=redis, QUEUE_HOST=demo(如果你的mysql安裝在本機127.0.0.1就可以不需要修改這部分, 修改主要是方便上線在內(nèi)網(wǎng)部署mysql服務(wù)器, 這樣修改不需要指定內(nèi)網(wǎng)mysql的ip地址)奄妨。

Docker原理
  • 如圖Docker在pull一個可使用的鏡像, 鏡像是可讀不可寫的, 圖中可見該鏡像有七個添加后的可寫層并被重新構(gòu)建了images, 現(xiàn)在正在下載壓縮鏡像并解壓鏡像啟動容器, 這個步驟容易出問題, 那就直接去github issues搜索相關(guān)問題。

  • laradock目錄下可以使用環(huán)境構(gòu)建工具docker-compose啟動容器, 例如啟動mysql, apache, redis容器實例各一個: docker-compose up -d mysql apache2 redis苹祟。docker會查看你本地是否有需要的鏡像, 沒有的話它就會自動根據(jù)dockerfile里面的代碼起pull images, then build containers砸抛。 一般情況下php-fpm和workspace容器不需要制定就會被啟動, 我們就可以進入workspace容器中使用里面的git, composer, npm, glup等一系列命令: docker-compose exec workspace。其實每一個容器你都可以進去, 只是推薦進入這個為開發(fā)者打造的workspace而已, 你也可以添加參數(shù)指定以哪個用戶進入(由于composer不推薦使用默認的root執(zhí)行compsoer命令), 還可以指定端口, 可以指定進入時候使用何種shell, 我也不知道在Mac上是不是可以指定zsh树枫。

  • 默認從國外的docker官方hub下載鏡像非常慢, 建議使用阿里云或者DaoCloud加速器或者更換為國內(nèi)倉庫锰悼。點擊Docker圖標, Preferences, Daemon, 將加速器鏈接添加到下方的鏡像倉庫中應(yīng)用并重啟即可。你前后使用docker info可以查看到鏡像倉庫的改變团赏。當然, 其他平臺也可以使用DaoIcoud官方提供的方法配置加速器: https://www.daocloud.io/mirror#accelerator-doc

添加鏡像加速服務(wù)
  • 查看一下容器啟動情況, 你可以使用docker ps查看正在運行的所有容器, 也可以進入laradock目錄只查看laradock中使用docker-compose啟動的容器: docker-composer ps耐薯√蚯澹看到容器啟動成功(和你使用ps aux|grep nginx類似, 容器啟動成功后又一個容器是會關(guān)閉的, 沒任何影響哦)后就訪問localhost或者虛擬余名進行測試吧。

  • 修改.env中的配置, 單個項目只需要改成 APPLICATION=../example/, 多個項目設(shè)置不需要改變這個配置文件曲初。修改后重啟Docker容器docker-compose restart, 可別down銷毀容器哦体谒。

成功結(jié)果
部署完成
  • 其他常用命令:

    • 停止所有容器運行docker-compose stop,
    • 停止mysql容器運行docker-compose stop {container name},
    • 刪除所有容器docker-compose down,
    • 刪除指定容器docker-compose down {container name},
    • 后臺啟動容器(本地沒有鏡像則會先pull)docker-compose up -d {container name},
    • 進入容器:docker-compose exec {container name} bash/zsh
    • 查看正在運行的容器docker-compose ps,
    • 查看歷史所有的容器docker-compose ps -a,
    • 查看日志文件docker logs {container name}
    • 重建所有容器docker-compose build,
    • 重建某個容器docker-compose build {container name},
    • 退出容器exit
  • 其他關(guān)于虛擬域名配置, php版本切換, 安裝XDebug, apache和nginx多站點和php拓展安裝大家就看文檔吧, 這部分挺簡單的。laradock作為docker中的homestead稍微有些龐大, 并且使用laradock部署yii和普通的php項目不太合適, 所以我最近轉(zhuǎn)向使用phpdocker.io, 這是一個可定制的dockerfil生成器, 并且簡潔清爽, 缺點就是官方文檔幾乎沒有臼婆。

  • 自己對docker還有一些問題不太清楚, 關(guān)于dockerfile和持續(xù)集成部署也尚未實戰(zhàn)了解, 希望這次能從曉樂這邊學(xué)到很多東西抒痒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颁褂,隨后出現(xiàn)的幾起案子故响,更是在濱河造成了極大的恐慌,老刑警劉巖颁独,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彩届,死亡現(xiàn)場離奇詭異,居然都是意外死亡誓酒,警方通過查閱死者的電腦和手機樟蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寨辩,你說我怎么就攤上這事吓懈。” “怎么了靡狞?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵耻警,是天一觀的道長。 經(jīng)常有香客問我耍攘,道長榕栏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任蕾各,我火速辦了婚禮扒磁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘式曲。我一直安慰自己妨托,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布吝羞。 她就那樣靜靜地躺著兰伤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钧排。 梳的紋絲不亂的頭發(fā)上敦腔,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音恨溜,去河邊找鬼符衔。 笑死,一個胖子當著我的面吹牛糟袁,可吹牛的內(nèi)容都是我干的判族。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼项戴,長吁一口氣:“原來是場噩夢啊……” “哼形帮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起周叮,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤辩撑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仿耽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體槐臀,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年氓仲,在試婚紗的時候發(fā)現(xiàn)自己被綠了水慨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片得糜。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晰洒,靈堂內(nèi)的尸體忽然破棺而出朝抖,到底是詐尸還是另有隱情,我是刑警寧澤谍珊,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布治宣,位于F島的核電站,受9級特大地震影響砌滞,放射性物質(zhì)發(fā)生泄漏侮邀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一贝润、第九天 我趴在偏房一處隱蔽的房頂上張望绊茧。 院中可真熱鬧,春花似錦打掘、人聲如沸华畏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亡笑。三九已至,卻和暖如春横朋,著一層夾襖步出監(jiān)牢的瞬間仑乌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工琴锭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晰甚,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓祠够,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粪牲。 傳聞我的和親對象是個殘疾皇子古瓤,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容