本文github庫:https://github.com/xiaoemoxiw/docker.g
國內(nèi)碼云庫:https://gitee.com/jlgg/docker.git
docker搭建PHP(laravel)環(huán)境悯辙,是docker的其中一塊應(yīng)用。對于laravel開發(fā)者來說,使用docker來搭建整個完整的環(huán)境是一個及其方便方案醒颖。
本方案使用的是php-7.12募疮,nginx的最新版本篓冲,mysql-5.7的環(huán)境龄广。在php鏡像里面蒲讯,安裝composer,npm(cnpm)的包恐仑∪可以基本滿足larave開發(fā)的所有需要。
一裳仆、安裝docker
注意:成功安裝完docker以后腕让,需要使用docker加速器,不然拉鏡像會十分慢歧斟。
1纯丸、Centos安裝
推薦方式:利用阿里云的yum鏡像。
(1)具體更新yum源方法參考:https://opsx.alibaba.com/mirror
(2) 安裝必要的一些系統(tǒng)工具
# yum install -y yum-utils device-mapper-persistent-data lvm2
(3) 添加軟件源信息
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)更新并安裝静袖。
# yum makecache
# yum update
# yum -y install docker-ce
(5)docker-compose安裝
yum install -y docker-compose
(6)docker加速器修改方案:
? ??????curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://9d4cd35f.m.daocloud.io
該腳本可以將 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中觉鼻。
成功后重啟docker
centos6:service docker restart
centos7:systemctl restart docker
官方安裝方法:
(1)打開官方教程地址:https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository
(2)按照官方描述步驟,一步步執(zhí)行即可队橙。
(3)安裝完docker以后坠陈,需要安裝docker-compose,具體安裝方法請參照:https://docs.docker.com/compose/gettingstarted/#prerequisites
4捐康、mac系統(tǒng)安裝
若是mac系統(tǒng)仇矾,則推薦官方安裝包,請在官方下載mac安裝包解总,直接安裝即可贮匕。
加速器添加方法:
右鍵點擊桌面頂欄的 docker 圖標(biāo),選擇 Preferences 花枫,在 Daemon 標(biāo)簽(Docker 17.03 之前版本為 Advanced 標(biāo)簽)下的 Registry mirrors 列表中加入下面的鏡像地址:
http://9d4cd35f.m.daocloud.io
3刻盐、windows安裝
個人不推薦安裝Windows版的docker版本,通過各種測試乌昔,Windows在數(shù)據(jù)卷處理的時候隙疚,會出現(xiàn)比較多問題,解決起來比較麻煩磕道,如果你有神一般的解決bug的能力供屉,可以嘗試。
個人推薦在本地安裝一個centos的環(huán)境溺蕉,然后在安裝centos的安裝步驟去安裝docker伶丐,安裝完docker以后,可以通過samba來共享文件疯特,或者使用虛擬機的共享功能來共享文件哗魂。
二、初始化yml文件
????在git上把文件拉到本地漓雅,然后進入項目目錄录别。在項目根目錄里面朽色,有一個docker-compose-demo.yml 文件,執(zhí)行一下命令初始化一個新的yml文件组题。
????# mv docker-compose-demo.yml docker-compose.yml
三葫男、配置nginx
(1)進入nginx目錄,并創(chuàng)建nginx的conf.d配置目錄
????# cd ./nginx
? ? #?mkdir conf.d
(2)創(chuàng)建nginx配置文件
? ? #?cp nginx/demo_php_conf.d.conf nginx/conf.d
????執(zhí)行以上命令得到其中一個nginx的示例配置文件崔列,這里可以配置無限多個站點梢褐,可以自定義nginx文件格式
(3)配置yml文件
????增加一個端口,請在docker-compose.yml的nginx里面的ports中增加相應(yīng)的端口
????如增加一個8080端口赵讯,則增加一項[- "8080:8080"]
四盈咳、配置php-fpm
? ??php-fpm容器,也就是php容器边翼,這里面集成了定時任務(wù)(cron)和進程管理(supervisor)這兩個工具鱼响。一般在laravel里面需要使用隊列,控制隊列多線程并發(fā)讯私,是需要這兩個應(yīng)用的热押。
1西傀、定時任務(wù)(cron)
定時任務(wù)放在cron文件夾中斤寇,增加新的定時任務(wù)文件,需要在supervisor中的program.conf指定讀取的文件拥褂。
現(xiàn)在是有一個文件為laravel娘锁,里面定義了基礎(chǔ)的調(diào)度任務(wù)。
在 php-fpm/supervisor/program.conf中
? ??????[program:crontab]
????????command=crontab /var/spool/cron/crontabs/laravel
建議所有的調(diào)度任務(wù)都放在php-fpm/cron/laravel饺鹃,不然還需要在docker-compose.yml指明文件共享莫秆。
2、進程管理(supervisor)
在初始化時悔详,需要修改
php artisan路徑 queue:work redis --queue=隊列名稱 --sleep=3 --tries=3
具體參考laravel手冊
現(xiàn)在進程管理配置文件中包括了隊列任務(wù)镊屎,定時任務(wù)和php-fpm進程。
其中[program:php-fpm]和[program:cron-restart]項不能修改茄螃。
增加一項進程缝驳,添加一項
[program:進程名稱]?
具體的進程內(nèi)容
五、執(zhí)行docker
在docker-compose.yml所在目錄归苍,也就是docker代碼的根目錄用狱,執(zhí)行一下命令。
啟動項目:docker-compose up -d
關(guān)閉項目:docker-compose down
六拼弃、進入容器
本項目的根目錄下有一個叫exec.sh的腳本夏伊,在本目錄下執(zhí)行[./exec.sh 容器名稱]即可進入目錄。
注意:
在執(zhí)行[./exec.sh 容器名稱]之前吻氧,先執(zhí)行[chmod +x ./exec.sh]命令,給腳本賦予執(zhí)行權(quán)限溺忧。
exec.sh更方便的使用方式
執(zhí)行:
cp ./exec.sh /usr/local/bin/exec.sh && chmod +x /usr/local/bin/exec.sh
在任何目錄下咏连,都可以執(zhí)行 [exec.sh 容器名稱] 來進入容器
進入php容器:exec.sh php
進入mysql容器:exec.sh mysql
進入redis容器:exec.sh redis
進入nginx容器:exec.sh nginx
七、執(zhí)行npm(cnpm)或者composer
完成進入容器這個步驟以后鲁森,通過exec php 進入php容器
然后直接執(zhí)行cnpm或者composer即可
以上為整個docker配置larave環(huán)境的具體步驟和注意事項捻勉,項目的更新會最先體現(xiàn)在github,可以關(guān)注此項目刀森。若覺得這個項目不錯踱启,可以給項目star。
若要封裝更多的應(yīng)用研底,可以留言給我埠偿,我會專門弄分支來處理不同的需求。