在Mac上安裝和使用Docker搭建laravel環(huán)境
首先當然是下載docker, 推薦使用增強型brew
brew 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在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。
查看一下容器啟動情況, 你可以使用
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銷毀容器哦体谒。
-
其他常用命令:
- 停止所有容器運行
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é)到很多東西抒痒。