定制 banma/dnmp 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

banma/dnmp

Composer 安装命令:

composer require banma/dnmp

包简介

Install Docker + Nginx + PHP7.3 + MySQL

README 文档

README

[TOC]

1. 环境要求

  • git
  • docker
  • docker-compose

2. 包含的镜像

  • nginx-1.16.0
  • php7.3.10(包含composer,包含扩展 amqp、bcmath、Core、ctype、curl、date、dom、fileinfo、filter、ftp、gd、hash、iconv、imap、json、libxml、mbstring、memcached、mongodb、mysqlnd、openssl、pcre、PDO、pdo_mysql、pdo_sqlite、Phar、posix、readline、redis、Reflection、session、SimpleXML、SPL、sqlite3、standard、tokenizer、xml、xmlreader、xmlwriter、zip、zlib)
  • php7.1.7
  • php5.6.31
  • redis
  • mysql

3. 操作步骤

  • 克隆项目

git clone https://github.com/ballooninmyhand/dnmp.git

  • 进入目录

cd dnmp

  • 复制并修改配置文件,设置端口号和工作目录

cp env.example .env

  • 复制 docker-compose-example.yml 文件

cp docker-compose-example.yml docker-compose.yml

  • 使用 docker-compose 创建容器,首次运行请加上 --build 参数

docker-compose up -d [--build]

  • 打开浏览器,访问 localhost

  • 停止并销毁容器

docker-compose down

  • 重启某个容器

docker-compose restart 容器1 容器2

4. 安装PHP扩展

  • 如需安装其他 PHP 扩展,请自行修改 Dockerfile 文件

5. 如何设置 cron 定时任务

  • 推荐使用主机的 cron 实现定时任务
  • 每分钟执行 test.php 脚本,dnmp_php 是容器名称,test.php 在工作目录 /var/www/html
*/1 * * * * /usr/bin/docker exec dnmp_php php /var/www/html/test.php

6. 如何在 php 代码中使用 curl

  • 问题:本地开发两个项目 A 和 B,A 需要用到 yar 扩展调用 B 中的一个 rpc 方法,但是发现报错 curl exec failed 'Couldn't connect to server'

  • 原因:项目A中不能解析设置的域名

  • 解决方案:在 docker-compose.yml 中配置静态ip,并在 php 中设置 extra_hosts

    • 配置虚拟网卡driver和subnet:
    networks:
      default:
        driver: bridge
        ipam:
          config:
          - subnet: 10.0.0.0/24
    • 设置nginx的静态ip
    nginx:
        #其他配置...
        networks:
          default:
            ipv4_address: 10.0.0.10
    • 再在php中设置extra_hosts
    php56:
        #其他配置...
        extra_hosts:
          - "project.com:10.0.0.10"
        networks:
          - default
    • 重启服务

7. 为什么 mac 上请求一个接口响应需要很久

  • 问题:在 mac 上开发时,请求一个接口需要1800ms,而在linux上只需要300ms

  • 原因:osxfs 文件系统效率太低,mac 和 container 的文件系统不一样,同步时需要做大量的格式转换。

  • 解决方案:安装 bg-sync,基本原理就是使用 daemon 方式建立一个同步磁盘,然后在 docker 启动容器时挂载这个同步磁盘。具体实现方式可以参考文件 docker-compose-mac.yml

8. 参考链接

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: Dockerfile

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-09-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固