Skip to content

zhangmazi/docker-php

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker化PHP环境

为合适自己的工作和开发环境而打造,for ninja911

  • 请配置docker的Registry mirrors为中国大陆的 daocloud.io(加速器)
  • 使用 docker-compose up -d 快速搭建php环境
  • 此构建基本全程使用国内镜像,构建速度杠杠的(除了php pecl和composer self-update外)

使用方法

基础配置

  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), 增加共享目录。要保证容器你所挂载本地目录一定是配置的子目录。 正确设置举例 【Windows】Share配置“E”盘,容器挂载本地目录E:/works;【Mac】Share配置“/User”, 容器挂载本地目录/User/username/works
  4. docker-compose.yaml 默认关闭了mysql,redis,mongodb,elasticsearch,如果需要请删除注释行.

Docker-php使用

  • 【必】复制example.env到同级目录下,并重命名.env,命令操作
cp ./example.env ./.env
  • 【必】修改.env文件的配置。LOCAL_STOARGE_PATH=设置为此github clone的根目录。 比如/User/username/server/docker-php
  • 【必】修改.env文件的配置。LOCAL_WEB_PATH=设置为你开发项目的基础根目录, 比如/User/username/works
  • 【选】修改.env文件配置。MYSQL_ROOT_PASSWORD=设置MYSQL数据库初始化root的密码,默认为mysql2018
  • 【必】启动所有命令行执行
docker-compose up -d

Nginx配置

  • 多个虚拟站点的配置,直接参考nginx/conf.d/demo.cfg, 复制粘贴demo.cfg在同目录下并重名为site1.conf, 并根据注释修改目录路径(以容器目录为准),重命名文件必须以conf扩展名结尾, 举例命令行
cp ./nginx/conf.d/demo.cfg ./nginx/conf.d/site1.conf
  • 开启HTTPS支持。 第一次进入nginx容器,命令行
docker-compose exec nginx bash
# 自动化生成相关证书,生成目录在容器目录/etc/nginx/ssl
sh /usr/local/bin/docker-make-ssl.sh
# 拷贝容器的所有证书到宿主机nginx/ca目录下
cp -R /etc/nginx/ssl /etc/nginx/ca

然后配置你的nginx虚拟站点conf,取消相关ssl_注释即可,默认开放443:443映射

  • 使用动态扩展库方法,复制nginx/my_modules/xxxx.so 文件到nginx容器里/etc/nginx/module/内,并修改nginx.conf文件,在worker_processes下一行追加 load_module modules/xxxx.so;,可以参考conf.d/nginx.default配置.

PHP配置

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

环境构成

php-fpmnginx 容器分开,通过 php:9000 端口通信

php

php镜像来自官方 php:fpm,目前最新稳定版本是 7.2.8

在此基础上添加了以下等扩展:

  • swoole-4.0.3
  • redis/hiredis
  • mysqli
  • pdo_mysql
  • mongodb
  • bz2
  • dba
  • GD
  • zip
  • pdo_sqlite
  • memcached
  • bcmath
  • openssl
  • mbstring
  • sockets
  • event
  • posix
  • pcntl
  • intl
  • xml
  • tidy
  • json
  • ldap
  • calendar
  • soap
  • gmp
  • msgpack
  • inotify
  • grpc
  • seaslog
  • molten
  • zlib
  • apcu (可选)
  • ...

支持运行基于swoole/phalcon/workerman的项目

手动添加了 composer 并替换了国内源,修改了时区(Asia/Shanghai

nginx

直接使用的 nginx:latest 镜像,需要挂载自己的PHP项目工作目录,并配置nginx/conf.d里各个站点 可以支持HTTPS 加密协议访问(单向、双向)

mongodb

直接使用的 mongodb:latest 镜像,根据具体情况修改 /data/mongodb 本地映射的数据库文件夹,如不需要可注释掉,其他数据库同理。 Windows 磁盘是NTFS/FAT32,不支持Ext4大文件,不能挂载,需要注释挂载, Windows下无解

ElasticSearch

这里强制使用ES5.5.2版本。 如果需要安装IK,请自行配置容器插件目录(/usr/share/elasticsearch/plugins)

Beanstalk

包含Beanstalkd + Aurora, 进入容器执行/usr/local/aurora/aurora -c /usr/local/aurora/conf/aurora.toml, 就可以启动Aurora

常用运行

$ cd docker-php/
// 后台运行
$ docker-compose up -d
// 进入php容器bash环境
$ docker-compose exec php bash