Skip to content

zhangmazi/docker-php

This branch is 45 commits ahead of, 38 commits behind opso-code/docker-php:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
zhang.cheng
Mar 11, 2019
216e56b · Mar 11, 2019

History

54 Commits
Mar 5, 2019
Nov 3, 2018
Aug 13, 2018
Aug 14, 2018
Sep 7, 2018
Dec 28, 2018
Aug 13, 2018
Feb 6, 2018
Aug 12, 2018
Mar 5, 2019
Mar 11, 2019
Mar 5, 2019

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

Packages

No packages published

Languages

  • Dockerfile 69.3%
  • Shell 30.4%
  • PHP 0.3%