{"id":15024247,"url":"https://github.com/telanflow/dnmp","last_synced_at":"2025-04-09T20:03:43.503Z","repository":{"id":40516742,"uuid":"190152891","full_name":"telanflow/dnmp","owner":"telanflow","description":"docker-compose  php56/php72/php74/php80/php81/php82/php83/php84/mysql/nginx/redis/swoole/mongodb","archived":false,"fork":false,"pushed_at":"2025-03-03T06:19:18.000Z","size":36051,"stargazers_count":18,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T20:03:32.604Z","etag":null,"topics":["dnmp","docker","docker-compose","lnmp","mongodb","mysql","nginx","php","php56","php72","php74","php8","php81","php82","php83","php84","redis","swoole"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/telanflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-04T07:36:41.000Z","updated_at":"2025-03-03T06:19:21.000Z","dependencies_parsed_at":"2025-02-15T19:31:22.573Z","dependency_job_id":"d91ec7dd-28f9-4d10-b982-66afd0b5845e","html_url":"https://github.com/telanflow/dnmp","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telanflow%2Fdnmp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telanflow%2Fdnmp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telanflow%2Fdnmp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/telanflow%2Fdnmp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/telanflow","download_url":"https://codeload.github.com/telanflow/dnmp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103864,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dnmp","docker","docker-compose","lnmp","mongodb","mysql","nginx","php","php56","php72","php74","php8","php81","php82","php83","php84","redis","swoole"],"created_at":"2024-09-24T20:00:01.029Z","updated_at":"2025-04-09T20:03:43.493Z","avatar_url":"https://github.com/telanflow.png","language":"Dockerfile","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003eDNMP 1.6\u003cbr\u003e\n\u003c/h1\u003e\n\nDNMP 可以构建出基于 Docker 的 PHP 开发环境，其优势有在短时间内随意构建不同版本的相关服务、环境统一分布在不同服务器等，使开发者能够更专注于开发业务本身。\n\n\u003e 友情提示：请务必配置 DockerHub 加速器（方法见底部），不然会镜像下载超时。\n\n## 📖 产品特色\n\n* 灵活切换适合国内的源（apt-get、php composer）\n* 组件精简易懂，学习、测试环境、生产环境均适合\n* 良好的扩展性\n\n## 🚀 组件（容器）及相关软件版本\n\n* Ningx：latest\n* PHP56：php-fpm 5.6.x `composer:2.2.x swoole:1.10.5 redis:4.3.0`\n* PHP72：php-fpm 7.2.x `composer:2.5.7 swoole:4.8.13 redis:5.3.7 mongodb:1.15.3`\n* PHP74：php-fpm 7.4.x `composer:2.5.7 swoole:4.8.13 redis:5.3.7 mongodb:1.15.3`\n* PHP80：php-fpm 8.0.x `composer:2.5.7 swoole:5.0.3 redis:6.1.0 mongodb:1.15.3`\n* PHP81：php-fpm 8.1.x `composer:2.8.4 swoole:5.1.6 redis:6.1.0 mongodb:1.20.1`\n* PHP82：php-fpm 8.2.x `composer:2.8.4 swoole:6.0.0 redis:6.1.0 mongodb:1.20.1`\n* PHP83：php-fpm 8.3.x `composer:2.8.4 swoole:6.0.0 redis:6.1.0 mongodb:1.20.1`\n* PHP84：php-fpm 8.4.x `composer:2.8.4 swoole:6.0.0 redis:6.1.0 mongodb:1.20.1`\n* MySQL：5.7\n* Redis：latest `默认密码：dnmp`\n* Mogodb:  latest `默认验证数据库：admin 账号：admin 密码：admin`\n\n### 目录结构\n\n    dnmp\n    |----/build                  镜像构建目录\n    |----/config                 配置文件目录\n    |----/data                   持久化数据目录\n    |----/www                    WEB文件目录\n    |----/.env-example           配置文件示例\n    |----/docker-compose.yml     docker compose 配置文件（需本地编译）\n    |----/docker-compose-hub.yml docker compose 配置文件（从Docker Hub拉取编译好的镜像）\n\n## 🛠 开始安装\n\n没有安装 Docker 的同学移步 [安装教程](https://github.com/telanflow/dnmp.git#安装-docker-及相关工具)，如果你有足够的时间强烈建议通读 [Docker — 从入门到实践](https://yeasy.gitbooks.io/docker_practice/content/)\n\n    cd ~/\n    git clone --depth 1 https://github.com/telanflow/dnmp.git\n    \n    cd dnmp\n    cp .env-example .env\n    \n    # 配置数据库密码、时区、端口等\n    vim .env\n\n    # 基于Docker Hub已编译好的镜像启动容器\n    sudo docker-compose -f docker-compose-hub.yml up -d\n    \n    # 本地构建全部镜像并启动容器\n    sudo docker-compose up --build -d\n    \n    # 本地构建单个镜像并启动容器\n    sudo docker-compose up --build -d [nginx|php56|php74|php80 ...]\n    \n    # 本地构建单个镜像\n    sudo docker-compose build --no-cache [nginx|php56|php74|php80 ...]\n\n\u003e 📢 注意：dnmp部署完成后，需要修改redis服务的密码`config/redis/redis.conf 设置 requirepass dnmp（替换成你自己的密码）`\n\n启动成功访问 http://localhost 即可\n\n### 常用操作命令\n\n    # 查看当前启动的容器\n    sudo docker-compose ps\n    \n    # 启动部分服务在后边加服务名，不加表示启动所有，-d 表示在后台运行\n    sudo docker-compose up -d [nginx|php56|php74|php80 ...]\n    \n    # 启动容器\n    sudo docker-compose start [nginx|php56|php74|php80 ...]\n    \n    # 停止容器\n    sudo docker-compose stop [nginx|php56|php74|php80 ...]\n    \n    # 重启容器\n    sudo docker-compose restart [nginx|php56|php74|php80 ...]\n    \n    # 停止并删除相关的容器\n    sudo docker-compose down [nginx|php56|php74|php80 ...]\n    \n    # 删除所有未运行的容器\n    sudo docker rm $(sudo docker ps -a -q)\n    \n    # 删除所有未运行的镜像，-f 可以强制删除\n    sudo docker rmi $(sudo docker images -q)\n    \n    # 删除dnmp\n    sudo docker rm $(sudo docker ps -a | grep dnmp | awk '{print $1}')\n    \n    # ⚠️清理所有停止的容器（注意如果执行 docker images -a 会出现一些 none 的镜像，这些是构建镜像的中间层不占用空间也不是垃圾数据，不用管）\n    sudo docker system prune\n    \n    # 进入容器\n    docker exec -it [dnmp-nginx|dnmp-redis|dnmp-php74|dnmp-php80| ...] bash\n\n更多可通过 `sudo docker -h` 或者 `sudo docker-compose -h` 查看\n\n### 容器内目录映射\n\n```\n# Nginx\n/etc/nginx          配置文件目录\n/etc/nginx/html     .env文件中的 WWW_DIR\n\n# PHP\n/etc/nginx/html     .env文件中的 WWW_DIR\n/usr/local/etc      配置文件目录 `部分文件已经映射到config目录下`\n\n# Mysql\n/etc/mysql           配置文件目录\n\n# Redis\n/usr/local/etc/redis 配置文件目录\n\n```\n\n### 修改镜像文件怎么处理？\n\n比如在 php 里新增一个扩展\n\n    # 1、更改对应的 dnmp/build/php/Dockerfile\n    # 2、重新构建镜像\n    sudo docker-compose build --no-cache [php56|php74|php80 ...]\n\n### 如何在 php 里连接 MySQL 和 Redis？\n\n    \u003c?php\n    \n        echo \"\u003cpre\u003e\";\n    \n        // 连接 MySQL\n        $user = \"root\";\n        $pass = \"root\";\n        $dbh = new PDO('mysql:host=mysql;dbname=mysql', $user, $pass);\n        \n        foreach($dbh-\u003equery('SELECT * from user') as $row) {\n            print_r($row);\n        }\n    \n        echo \"\u003cbr /\u003e\";\n    \n        // 连接 Redis\n        $redis = new Redis();\n        $redis-\u003econnect('redis', 6379);\n        $redis-\u003eset(\"test-key\",\"hello\");\n        echo \"Stored string in redis:: \" . $redis-\u003eget(\"test-key\");\n        \n        // 连接 Mongodb\n        $manager = new MongoDB\\Driver\\Manager(\"mongodb://mongodb:27017\");\n        \n\n### 其他的坑\n\n如果需要升级某些组件的版本需要注意载入对应版本的配置文件，修改对应的配置信息，比如 redis.conf 默认配置的出口 ip 为 127.0.0.1，这样的话 php 的容器是连不上的，需要修改成 0.0.0.0，另外也要注意修改对应的 log path。\n\n## 安装 Docker 及相关工具\n\n### 安装 docker（2选1）\n\n1、参考 daocloud 提供的文档（推荐）\n\n    # 注意按照文档如果执行类似 install docker-ce=17.03.1* 出错，执行 install docker-ce 即可\n    https://download.daocloud.io/Docker_Mirror/Docker\n\n2、ubuntu 系统（可能不是最新版本的，适合学习或者测试用）\n\n    apt-get update \u0026\u0026 apt install docker.io    \n\n### 安装 docker-compose\n\n    sudo curl -L \"https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\n    \n    sudo chmod +x /usr/local/bin/docker-compose\n\n### 启动 Docker\n\n    sudo service docker start\n    sudo docker info\n\n### 配置 DockerHub 加速器（你用的阿里云也许不用配置，如果觉得下载镜像很慢就配置）\n\n\u003e ⚠️⚠️⚠️ 自 2024-06-06 开始，国内的 Docker Hub 镜像加速器相继停止服务，可选择为 Docker daemon 配置代理或自建镜像加速服务。\n\u003e 请使用最新的加速方法。\n\n~~阿里云加速器：每个人有对应的加速地址，访问 https://cr.console.aliyun.com -\u003e【镜像加速器】配置加速器~~\n\n~~DaoCloud 加速器：http://guide.daocloud.io/dcs/daocloud-9153151.html~~\n\n~~腾讯云加速器：https://www.qcloud.com/document/product/457/7207~~\n\n#### 镜像加速\n\n[Docker Hub 镜像加速器](https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6)\n\n[2024-06-18 Docker Hub 镜像源列表](https://linux.do/t/topic/114516)\n\n[2025-01-03 国内可用Docker镜像源加速器](https://www.wangdu.site/course/2109.html)\n\n\u003e Ubuntu 16.04+、Debian 8+、CentOS 7+\n\n创建或修改 /etc/docker/daemon.json：\n\n```bash\nsudo mkdir -p /etc/docker\nsudo tee /etc/docker/daemon.json \u003c\u003cEOF\n{\n    \"registry-mirrors\": [\n        \"https://docker.1panel.dev\",\n        \"https://docker.foreverlink.love\",\n        \"https://docker.xn--6oq72ry9d5zx.cn\",\n        \"https://docker.zhai.cm\",\n        \"https://docker.5z5f.com\",\n        \"https://a.ussh.net\",\n        \"https://docker.cloudlayer.icu\",\n        \"https://hub.littlediary.cn\",\n        \"https://hub.crdz.gq\",\n        \"https://docker.unsee.tech\",\n        \"https://docker.kejilion.pro\",\n        \"https://registry.dockermirror.com\",\n        \"https://hub.rat.dev\",\n        \"https://dhub.kubesre.xyz\",\n        \"https://docker.nastool.de\",\n        \"https://docker.udayun.com\",\n        \"https://docker.rainbond.cc\",\n        \"https://docker.1panelproxy.com\",\n        \"https://atomhub.openatom.cn\",\n        \"https://docker.m.daocloud.io\",\n        \"https://docker.1ms.run\",\n        \"https://docker.linkedbus.com\",\n        \"https://dytt.online\",\n        \"https://func.ink\",\n        \"https://lispy.org\",\n        \"https://docker.xiaogenban1993.com\",\n        \"https://cr.laoyou.ip-ddns.com\",\n        \"https://docker.1panel.live\",\n        \"https://image.cloudlayer.icu\",\n        \"https://hub.fast360.xyz\",\n        \"https://docker-0.unsee.tech\",\n        \"https://docker.1panelproxy.com\",\n        \"https://docker.tbedu.top\",\n        \"https://dockerpull.cn\",\n        \"https://ccr.ccs.tencentyun.com\"\n    ]\n}\nEOF\nsudo systemctl daemon-reload\nsudo systemctl restart docker\n```\n\n### 配置Docker Desktop Proxies\n\n如果不想配置加速器，可以直接使用代理方式。（该方式更快速有效，加速build时资源下载速度）\n\n![alt text](docker-desktop-proxies.png)\n\n\n## 📄 License\n[MIT License](/LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelanflow%2Fdnmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftelanflow%2Fdnmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelanflow%2Fdnmp/lists"}