记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

DNMP 可以构建出基于 Docker 的 PHP 开发环境

DNMP 可以构建出基于 Docker 的 PHP 开发环境
DNMP 可以构建出基于 Docker 的 PHP 开发环境,其优势有在短时间内随意构建不同版本的相关服务、环境统一分布在不同服务器等,使开发者能够更专注于开发业务本身。
友情提示:请务必配置 DockerHub 加速器(方法见底部),不然会镜像下载超时。
产品特色
XML/HTML代码
  1. 灵活切换适合国内的源(apt-get、php composer)
  2. 组件精简易懂,学习、测试环境、生产环境均适合
  3. 良好的扩展性
组件(容器)及相关软件版本
XML/HTML代码
  1. Ningx:latest
  2. PHP56:php-fpm 5.6.x composer:1.8.0 swoole:1.10.5 redis:4.3.0
  3. PHP74:php-fpm 7.4.x composer:2.1.11 swoole:4.8.7 redis:5.3.7 mongodb:1.12.1
  4. PHP80:php-fpm 8.0.x composer:2.1.11 swoole:4.8.7 redis:5.3.7 mongodb:1.12.1
  5. PHP81:php-fpm 8.1.x composer:2.1.11 swoole:4.8.7 redis:5.3.7 mongodb:1.12.1
  6. MySQL:5.7
  7. Redis:latest 默认密码:dnmp
  8. Mogodb: latest 默认验证数据库:admin 账号:admin 密码:admin
  9. ElasticSearch:7.1.1
目录结构
XML/HTML代码
  1. dnmp
  2. |----/build                  镜像构建目录
  3. |----/config                 配置文件目录
  4. |----/data                   持久化数据目录
  5. |----/www                    WEB文件目录
  6. |----/.env-example           配置文件示例
  7. |----/docker-compose.yml     docker compose 配置文件
开始安装
没有安装 Docker 的同学移步 安装教程,如果你有足够的时间强烈建议通读 Docker — 从入门到实践
XML/HTML代码
  1. cd ~/
  2. git clone --depth 1 https://github.com/telanflow/dnmp.git
  3. cd dnmp
  4. cp .env-example .env
XML/HTML代码
  1. # 配置数据库密码、时区、端口等
  2. vim .env
  3. # 构建全部镜像并启动容器
  4. sudo docker-compose up --build -d
  5. # 构建单个镜像并启动容器
  6. sudo docker-compose up --build -d [nginx|php56|php74|php80 ...]
  7. # 构建单个镜像
  8. sudo docker-compose build --no-cache [nginx|php56|php74|php80 ...]
注意:dnmp部署完成后,需要修改redis服务的密码config/redis/redis.conf 设置 requirepass dnmp(替换成你自己的密码) 
启动成功访问 http://localhost 即可
常用操作命令
XML/HTML代码
  1. # 查看当前启动的容器
  2. sudo docker-compose ps
  3. # 启动部分服务在后边加服务名,不加表示启动所有,-d 表示在后台运行
  4. sudo docker-compose up -d [nginx|php56|php74|php80 ...]
  5. # 启动容器
  6. sudo docker-compose start [nginx|php56|php74|php80 ...]
  7. # 停止容器
  8. sudo docker-compose stop [nginx|php56|php74|php80 ...]
  9. # 重启容器
  10. sudo docker-compose restart [nginx|php56|php74|php80 ...]
  11. # 停止并删除相关的容器
  12. sudo docker-compose down [nginx|php56|php74|php80 ...]
  13. # 删除所有未运行的容器
  14. sudo docker rm $(sudo docker ps -a -q)
  15. # 删除所有未运行的镜像,-f 可以强制删除
  16. sudo docker rmi $(sudo docker images -q)
  17. # 删除dnmp
  18. sudo docker rm $(sudo docker ps -a | grep dnmp | awk '{print $1}')
  19. # ⚠️清理所有停止的容器(注意如果执行 docker images -a 会出现一些 none 的镜像,这些是构建镜像的中间层不占用空间也不是垃圾数据,不用管)
  20. sudo docker system prune
  21. # 进入容器
  22. docker exec -it [dnmp-nginx|dnmp-redis|dnmp-php74|dnmp-php80| ...] bash
更多可通过 sudo docker -h 或者 sudo docker-compose -h 查看
容器内目录映射
XML/HTML代码
  1. # Nginx
  2. /etc/nginx          配置文件目录
  3. /etc/nginx/html     .env文件中的 WWW_DIR
  4. # PHP
  5. /etc/nginx/html     .env文件中的 WWW_DIR
  6. /usr/local/etc      配置文件目录 `部分文件已经映射到config目录下
  7. # Mysql
  8. /etc/mysql           配置文件目录
  9. # Redis
  10. /usr/local/etc/redis 配置文件目录
修改镜像文件怎么处理?
比如在 php 里新增一个扩展
XML/HTML代码
  1. # 1、更改对应的 dnmp/build/php/Dockerfile
  2. # 2、重新构建镜像
  3. sudo docker-compose build --no-cache [php56|php74|php80 ...]
如何在 php 里连接 MySQL 和 Redis?
XML/HTML代码
  1. <?php
  2.  
  3.     echo "<pre>";
  4.  
  5.     // 连接 MySQL
  6.     $user = "root";
  7.     $pass = "root";  
  8.     $dbh = new PDO('mysqlmysqlmysql:host=mysql;dbname=mysql', $user, $pass);
  9.    
  10.     foreach($dbh->query('SELECT * from user') as $row) {
  11.         print_r($row);
  12.     }
  13.  
  14.     echo "<br />";
  15.  
  16.     // 连接 Redis
  17.     $redis = new Redis();
  18.     $redis->connect('redis', 6379);
  19.     $redis->set("test-key","hello");
  20.     echo "Stored string in redis:: " . $redis->get("test-key");
  21.   
  22.     // 连接 Mongodb
  23.     $manager = new MongoDB\Driver\Manager("mongodb://mongodb:27017");
其他的坑
如果需要升级某些组件的版本需要注意载入对应版本的配置文件,修改对应的配置信息,比如 redis.conf 默认配置的出口 ip 为 127.0.0.1,这样的话 php 的容器是连不上的,需要修改成 0.0.0.0,另外也要注意修改对应的 log path。
安装 Docker 及相关工具
安装 docker(2选1)
1、参考 daocloud 提供的文档(推荐)
XML/HTML代码
  1. # 注意按照文档如果执行类似 install docker-ce=17.03.1* 出错,执行 install docker-ce 即可
  2. https://download.daocloud.io/Docker_Mirror/Docker
2、ubuntu 系统(可能不是最新版本的,适合学习或者测试用)
XML/HTML代码
  1. apt-get update && apt install docker.io
安装 docker-compose
XML/HTML代码
  1. sudo curl -L "https://github.com/docker/compose/releases/download/2.27.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose
启动 Docker
XML/HTML代码
  1. sudo service docker start
  2. sudo docker info
配置 DockerHub 加速器(你用的阿里云也许不用配置,如果觉得下载镜像很慢就配置)
阿里云加速器:每个人有对应的加速地址,访问 https://cr.console.aliyun.com ->【镜像加速器】配置加速器
 

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):