# 注意
1、默认使用php7.3的镜像,如果你要用php7.2,请记得修改nginx的php代理配置
2、如果你要使用多个php-fpm容器,记得修改php-fpm容器内的监听9000端口,如果多个php-fpm容器端口都是9000,那么只会生效一个,nginx转发到其它的php-fpm容器会直接502,默认php和php7两个容器时,则不需要修改,我已经修改好了,一个监听9000,另一个监听9001。如果你还要增加多个,则请查看php/conf/zz-docker.conf配置,可以直接修改php-fpm的监听端口。
3、php扩展去掉了大部分压缩包安装,因为扩展一更新,需要去下载最新扩展覆盖,太麻烦,所以采用了pecl和install-php-extensions安装,后续会慢慢去掉pecl安装,因为install-php-extensions非常的强大,支持安装的扩展也非常多。采用pecl安装扩展有一个弊端,那就是如果安装的扩展有其它依赖,你需要先安装依赖才能安装扩展。使用install-php-extensions就不一样,install-php-extensions的作者已经写好了支持扩展需要的依赖,你安装扩展时,会自动帮你安装依赖,github地址:https://github.com/mlocati/docker-php-extension-installer
```
location ~ \.php$ {
fastcgi_pass php:9000; #这里要改为php7,对应你composer.yml里面的,也可以直接为127.0.0.1,那么就不需要修改容器内的端口号
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
```
集成了多个服务,目前有nginx、php、mysql、mongodb、redis、rabbitmq、phpredisadmin、supervisord(安装在php容器中)。如果你想支持更多的服务,可以参考原有的服务目录结构、env.sample配置、docker-compose-sample.yml配置
# 目录
- [1.目录结构](#1目录结构)
- [2.使用](#2使用)
- [3.PHP扩展](#3PHP和扩展)
- [4.添加快捷命令](#4添加快捷命令)
- [5.配置文件说明](#5配置文件说明)
- [6.PHP镜像选择](#6PHP镜像选择)
- [7.nodejs镜像选择](#7nodejs镜像选择)
- [8.监控文件变化](#8监控文件变化)
- [9.存在问题](#9存在问题)
- [10.swoole框架建议](#10swoole框架建议)
## 1.目录结构
```
/
├── mongodb Mongodb
│ └── Dockerfile Mongodb构建文件
├── Mysql Mysql目录
│ ├── conf Mysql配置文件目录
│ │ └── mysql.cnf mysql配置文件
│ └── Dockerfile Mysql构建文件
├── nginx Nginx
│ ├── conf Mysql配置文件目录
│ │ ├── conf.d Nginx站点ssh秘钥目录
│ │ ├── vhost Nginx虚拟站点配置目录
│ │ └── nginx.conf Nginx默认配置文件
│ └── Dockerfile Nginx构建文件
├── PHP PHP
│ ├── conf PHP配置文件目录
│ │ ├── supervisord.d supervisord配置目录
│ │ ├── php.ini PHP配置文件
│ │ └── php-fpm.conf php-fpm配置文件
│ ├── extensions PHP扩展目录(为了快速构建可以先下载好一些扩展)
│ ├── sh 构建中运行脚本目录
│ └── Dockerfile PHP构建文件
├── phpredisadmin redis界面管理
│ └── Dockerfile phpredisadmin构建文件
├── rebbitmq rebbitmq
│ └── Dockerfile rebbitmq构建文件
├── redis redis
│ └── Dockerfile redis构建文件
├── docker-compose-sample.yml Docker-compose配置示例文件
├── env.smaple 环境配置示例文件
└── README.MD 文档说明
```
## 2.使用
1. 本地安装`git`、`docker`和`docker-compose`。
2. `clone`项目
3. 拷贝并命名配置文件,启动:
```
$ cd dcnmp
$ cp env.sample .env
$ cp docker-compose-php.yml docker-compose.yml
$ docker-compose up
```
4. 访问在浏览器中访问:
- [http://localhost](http://localhost): 默认*http*站点
- [https://localhost](https://localhost):自定义证书*https*站点,访问时浏览器会有安全提示,忽略提示访问即可
两个站点使用同一PHP代码:`./www/localhost/index.php`。
要修改端口、日志文件位置、php代码目录位置、php扩展、php镜像版本等,请修改**.env**文件,然后重新构建:
```bash
$ docker-compose build php7 # 重建单个服务
$ docker-compose build # 重建全部服务
```
## 3.PHP扩展
PHP的很多功能都是通过扩展实现,而安装扩展是一个略费时间的过程,
所以,除PHP内置扩展外,在`env.sample`文件中默认安装少量扩展,
如果要安装更多扩展,请打开你的`.env`文件修改如下的PHP配置,
增加需要的PHP扩展:
```bash
PHP72_EXTENSIONS=pdo_mysql,opcache,redis # PHP 7.2要安装的扩展列表,英文逗号隔开
PHP56_EXTENSIONS=opcache,redis # PHP 5.6要安装的扩展列表,英文逗号隔开
```
然后重新build PHP镜像。
```bash
docker-compose build php7
docker-compose up -d
```
可用的扩展请看同文件的`PHP extensions`注释块说明。
如果需要更多的扩展,可以在alpine.sh和debian.sh中新增扩展
## 4.添加快捷命令
在开发的时候,我们可能经常使用`docker exec -it`切换到容器中,把常用的做成命令别名是个省事的方法。
打开~/.bashrc,加上:
```bash
alias dnginx='docker exec -it dcnmp_nginx /bin/sh'
alias dphp='docker exec -it dcnmp_php /bin/sh'
alias dphp7='docker exec -it dcnmp_php7 /bin/sh'
alias dmysql='docker exec -it dcnmp_mysql /bin/bash'
alias dredis='docker exec -it dcnmp_redis /bin/sh'
```
```bash
# 还需要运行加载才会生效
source ~/.bashrc
```
其它的服务一样,自行设置
## 5.配置文件说明
```bash
主要说明几个全局变量:
// php项目代码存放路径,一般映射在宿主机/app目录下
CODE_PATH=/app/www
// 各个服务软件的数据备份,比如mysql、redis等等,防止容器挂后数据不见的问题
DATA_PATH=/app/data
// 各个服务的配置,放在当前目录下每个服务目录的conf目录中
CONF_PATH=./
// 各个服务的log
LOG_PATH=/app/log
```
php项目代码、各服务的数据备份、各服务的日志都统一放在放在宿主机/app目录下,方便统一管理。
你也可以把配置也放到这个/app目录下,如果放到/app目录下,需要你提前把所有的服务目录下的conf目录中的所有文件都要复制到/app/conf/xxx服务名。
例如:mysql的配置复制到/app目录下,则为/app/conf/mysql/服务目录下的conf的所有目录文件。然后修改配置文件CONF_PATH=/app/conf
## 6.PHP镜像选择
PHP镜像支持多个版本,可以查看:https://github.com/docker-library/repo-info/tree/master/repos/php/remote
如果你用swoole不需要php-fpm的话,可以使用7.2-cli-alpine,如果需要php-fpm则用7.2-fpm-alpine。
## 7.nodejs镜像选择
nodejs官方镜像有三种,但是目前我们要选择-alpine后缀的,容量小、好用。nodejs搭配nginx很简单,在代理那里转发到nodejs容器即可,例如http://nodejs:3000
## 8.监控文件变化
新增对于hyperf等swoole框架的文件变化重启服务
进入到p
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
集成多种服务,目前包括nginx、PHP、MySQL、MongoDB、Redis、RabbitM (114个子文件)
gitlab.rb.bak 125KB
gitlab.rb.bak 125KB
webman.conf.bak 2KB
swoole.conf.bak 2KB
nodejs_test.conf.bak 2KB
localhost.conf.bak 2KB
test.ini.bak 638B
test.ini.bak 638B
test.ini.bak 638B
centos7_supervisord_hyperf.ini.bak 523B
centos7_supervisord_hyperf.ini.bak 523B
centos7_supervisord_hyperf.ini.bak 523B
mysql.cnf 990B
mysql.cnf 990B
redis.conf 61KB
php-fpm.conf 20KB
php-fpm.conf 18KB
php-fpm.conf 18KB
supervisord.conf 8KB
supervisord.conf 8KB
supervisord.conf 8KB
nginx.conf 1KB
zz-docker.conf 45B
zz-docker.conf 45B
zz-docker.conf 45B
localhost.crt 871B
localhost.csr 660B
Dockerfile 1KB
Dockerfile 1KB
Dockerfile 1KB
Dockerfile 1019B
Dockerfile 958B
Dockerfile 681B
Dockerfile 580B
Dockerfile 543B
Dockerfile 466B
Dockerfile 264B
Dockerfile 93B
Dockerfile 85B
Dockerfile 80B
Dockerfile 74B
Dockerfile 74B
Dockerfile 68B
Dockerfile 67B
Dockerfile 65B
Dockerfile 55B
Dockerfile 54B
Dockerfile 50B
.dockerignore 5B
createdb.sh.example 1KB
.gitattributes 53B
.gitignore 116B
.gitignore 40B
.gitignore 27B
apache-maven-3.6.3-bin.tar.gz 9.07MB
librdkafka-1.7.0.tar.gz 2.81MB
librdkafka-1.7.0.tar.gz 2.81MB
librdkafka-1.7.0.tar.gz 2.81MB
php.ini 71KB
php.ini 69KB
php.ini 69KB
php.ini-development-demo 71KB
install-php-extensions 155KB
install-php-extensions 155KB
install-php-extensions 155KB
localhost.origin.key 963B
localhost.key 891B
sources.list 3KB
sources.list 3KB
sources.list 3KB
sources.list 1KB
README.md 9KB
宿主机安装supervisord教程.md 1KB
宿主机安装supervisord教程.md 1KB
宿主机安装supervisord教程.md 1KB
version.md 97B
swoolefor.phar 0B
composer.phar 0B
composer.phar 0B
swoolefor.phar 0B
composer.phar 0B
swoolefor.phar 0B
env.sample 13KB
debian.sh 28KB
debian.sh 28KB
debian.sh 28KB
alpine.sh 27KB
alpine.sh 27KB
alpine.sh 27KB
init_harbor_notary_signer_db.sh 2KB
init_harbor_notary_server_db.sh 2KB
init_sonarqube_db.sh 2KB
init_gitlab_jh_db.sh 2KB
init_harbor_db.sh 2KB
init_gitlab_db.sh 2KB
centos_install_docker.sh 1KB
debian.sh 1KB
apline.sh 1KB
start.sh 632B
gencert.sh 621B
共 114 条
- 1
- 2
资源评论
普通网友
- 粉丝: 1127
- 资源: 5292
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一个用于 go 的 cron 库.zip
- 基于BJUI + Spring MVC + Spring + Mybatis框架的办公自动化系统设计源码
- 基于百度地图的Java+HTML+JavaScript+CSS高速公路设备管理系统设计源码
- 基于Django Web框架的母婴商城实践项目设计源码
- 一个使用 Go 编程语言和 WebAssembly 构建渐进式 Web 应用程序的包 .zip
- 基于Python桌面画笔的自动画图设计源码
- 基于Java语言的中医通病例问询子系统设计源码
- 基于Java语言的云南旅游主题设计源码
- 基于Java的ExamManageSystem软件详细设计课程设计源码
- 基于Java开发的简洁方便ORM工具BeetlSQL设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功