美文网首页
docker 完美搭建 laravel 运行环境(含 队列 和

docker 完美搭建 laravel 运行环境(含 队列 和

作者: 精灵GG | 来源:发表于2018-01-12 00:59 被阅读0次

    本文github库:https://github.com/xiaoemoxiw/docker.git

    国内码云库:https://gitee.com/jlgg/docker.git

    docker搭建PHP(laravel)环境,是docker的其中一块应用。对于laravel开发者来说,使用docker来搭建整个完整的环境是一个及其方便方案。

    本方案使用的是php-7.12,nginx的最新版本,mysql-5.7的环境。在php镜像里面,安装composer,npm(cnpm)的包。可以基本满足larave开发的所有需要。

    一、安装docker

    注意:成功安装完docker以后,需要使用docker加速器,不然拉镜像会十分慢。

    1、Centos安装

    推荐方式:利用阿里云的yum镜像。

    (1)具体更新yum源方法参考:https://opsx.alibaba.com/mirror

    (2) 安装必要的一些系统工具

    # 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)按照官方描述步骤,一步步执行即可。

    (3)安装完docker以后,需要安装docker-compose,具体安装方法请参照:https://docs.docker.com/compose/gettingstarted/#prerequisites

    4、mac系统安装

    若是mac系统,则推荐官方安装包,请在官方下载mac安装包,直接安装即可。

    加速器添加方法:

    右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

    http://9d4cd35f.m.daocloud.io

    3、windows安装

    个人不推荐安装Windows版的docker版本,通过各种测试,Windows在数据卷处理的时候,会出现比较多问题,解决起来比较麻烦,如果你有神一般的解决bug的能力,可以尝试。

    个人推荐在本地安装一个centos的环境,然后在安装centos的安装步骤去安装docker,安装完docker以后,可以通过samba来共享文件,或者使用虚拟机的共享功能来共享文件。

    二、初始化yml文件

        在git上把文件拉到本地,然后进入项目目录。在项目根目录里面,有一个docker-compose-demo.yml 文件,执行一下命令初始化一个新的yml文件。

        # mv docker-compose-demo.yml docker-compose.yml

    三、配置nginx

    (1)进入nginx目录,并创建nginx的conf.d配置目录

        # cd ./nginx

        # mkdir conf.d

    (2)创建nginx配置文件

        # cp nginx/demo_php_conf.d.conf nginx/conf.d

        执行以上命令得到其中一个nginx的示例配置文件,这里可以配置无限多个站点,可以自定义nginx文件格式

    (3)配置yml文件

        增加一个端口,请在docker-compose.yml的nginx里面的ports中增加相应的端口

        如增加一个8080端口,则增加一项[- "8080:8080"]

    四、配置php-fpm

        php-fpm容器,也就是php容器,这里面集成了定时任务(cron)和进程管理(supervisor)这两个工具。一般在laravel里面需要使用队列,控制队列多线程并发,是需要这两个应用的。

    1、定时任务(cron)

    定时任务放在cron文件夹中,增加新的定时任务文件,需要在supervisor中的program.conf指定读取的文件。

    现在是有一个文件为laravel,里面定义了基础的调度任务。

    在 php-fpm/supervisor/program.conf中

            [program:crontab]

            command=crontab /var/spool/cron/crontabs/laravel

    建议所有的调度任务都放在php-fpm/cron/laravel,不然还需要在docker-compose.yml指明文件共享。

    2、进程管理(supervisor)

    在初始化时,需要修改

    php artisan路径 queue:work redis --queue=队列名称 --sleep=3 --tries=3

    具体参考laravel手册

    现在进程管理配置文件中包括了队列任务,定时任务和php-fpm进程。

    其中[program:php-fpm]和[program:cron-restart]项不能修改。

    增加一项进程,添加一项

    [program:进程名称] 

    具体的进程内容

    五、执行docker

    在docker-compose.yml所在目录,也就是docker代码的根目录,执行一下命令。

    启动项目:docker-compose up -d

    关闭项目:docker-compose down

    六、进入容器

    本项目的根目录下有一个叫exec.sh的脚本,在本目录下执行[./exec.sh 容器名称]即可进入目录。

    注意:

    在执行[./exec.sh 容器名称]之前,先执行[chmod +x ./exec.sh]命令,给脚本赋予执行权限。

    exec.sh更方便的使用方式

    执行:

    cp ./exec.sh /usr/local/bin/exec.sh && chmod +x /usr/local/bin/exec.sh

    在任何目录下,都可以执行 [exec.sh 容器名称] 来进入容器

    进入php容器:exec.sh php

    进入mysql容器:exec.sh mysql

    进入redis容器:exec.sh redis

    进入nginx容器:exec.sh nginx

    七、执行npm(cnpm)或者composer

    完成进入容器这个步骤以后,通过exec php 进入php容器

    然后直接执行cnpm或者composer即可

    以上为整个docker配置larave环境的具体步骤和注意事项,项目的更新会最先体现在github,可以关注此项目。若觉得这个项目不错,可以给项目star。

    若要封装更多的应用,可以留言给我,我会专门弄分支来处理不同的需求。

    相关文章

      网友评论

          本文标题:docker 完美搭建 laravel 运行环境(含 队列 和

          本文链接:https://www.haomeiwen.com/subject/ihrxoxtx.html