手牵手一起使用 docker 搭建 PHP 环境,并使用 supervisor 管理你的 swoole 进程

随着公司项目的茁壮成长,所需要的功能越来越多。swoole的使用也就呼之欲出了!laravel框架目前比较好使用swoole的方案应该非laravels莫属了。自热而然的鄙人想到使用laravel+laravels+nginx+supervisor,打造一个简洁、易用、可扩展的docker-compose文件,供各位客官使用。

docker-php项目地址

使用方法

基础配置(以安装好docker-compose的同学们,可以跳过此步骤)

  1. 安装Docker(官方默认会自带docker-compose 工具), 已经安装过的可以跳过此步
  2. 对Docker Machine 设置里,配置Setting->Daemon->Registry mirrors,增加加速器URL,比如http://xxxx.m.daocloud.io
  3. 对Docker Machine 设置里,配置Setting->Shared Drives(Windows)/File Sharing(Mac),

Docker-php的使用

  1. 复制example.env到同级目录下,并重命名.env,命令操作
    cp ./example.env ./.env
  2. 修改.env文件的配置。LOCAL_STOARGE_PATH=设置为此github clone的根目录。 比如/var/www/html/docker-php
  3. 修改.env文件的配置。LOCAL_WEB_PATH=设置为你开发项目的基础根目录, 比如/var/www/html/docker-php/www
  4. 把要启动的进程,比如laravels 或者php 的supervisor配置文件加入到 /var/www/html/docker-php/supervisor/conf
  5. 启动docker-composer
    docker-compose up -d

nginx的使用

  1. 多个虚拟站点的配置,直接参考nginx/conf.d/demo.cfg, 复制粘贴demo.cfg在同目录下并重名为site1.conf, 并根据注释修改目录路径(以容器目录为准),重命名文件必须以conf扩展名结尾, 举例命令行
  2. nginx 的错误日志目录在 /var/www/html/docker-php/log/nginx

php的使用

  1. 【Seaslog】的配置范本文件在宿主机php/ext/ini/seaslog.ini里,根据注释复制一下,然后进入PHP容器修改容器内的文件/usr/local/etc/php/conf.d/docker-php-ext-seaslog.ini 即可, 命令如下
  2. php 中使用composer
    docker-compose exec php bash
    composer install

    supervisor 的使用

  3. supervisor 启动日志目录 /var/www/html/docker-php/log/supervisor
  4. supervisor 进程启动目录 /var/www/html/docker-php/supervisor/conf
  5. supervisor 的基本使用命令介绍
    //进入php容器内
    docker-compose exec php bash
    //启动某个进程(program_name=你配置中写的程序名称)
    supervisorctl start program_name
    //查看正在守候的进程
    supervisorctl
    //停止某一进程 (program_name=你配置中写的程序名称)
    supervisorctl stop program_name
    //重启某一进程 (program_name=你配置中写的程序名称)
    supervisorctl restart program_name
    //停止全部进程
    supervisorctl stop all

    在这里特别鸣谢php界的暖男(laravels的作者),并附上项目地址:https://github.com/hhxsv5/laravel-s

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

不错,手牵手

5年前 评论

有个疑问,supervisor跑php脚本的时候不是cli模式吗?你这是fpm如果跑队列不会断开吗?

3年前 评论
magein 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!