在Mac上安裝和使用Docker搭建laravel環境

在Mac上安裝和使用Docker搭建laravel環境

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

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

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

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

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

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

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

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

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

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

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

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

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

成功結果
部署完成
  • 其他常用命令:

    • 停止所有容器運行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
  • 其他關于虛擬域名配置, php版本切換, 安裝XDebug, apache和nginx多站點和php拓展安裝大家就看文檔吧, 這部分挺簡單的。laradock作為docker中的homestead稍微有些龐大, 并且使用laradock部署yii和普通的php項目不太合適, 所以我最近轉向使用phpdocker.io, 這是一個可定制的dockerfil生成器, 并且簡潔清爽, 缺點就是官方文檔幾乎沒有。

  • 自己對docker還有一些問題不太清楚, 關于dockerfile和持續集成部署也尚未實戰了解, 希望這次能從曉樂這邊學到很多東西。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容