troggybrains / damp
Docker Apache MySQL PHP 栈,易于进行网页开发
This package is auto-updated.
Last update: 2024-09-12 15:54:09 UTC
README
你是否厌倦了在你的本地机器上投入时间和金钱来建立一个可用的网页开发环境?
你一直在网上寻找添加这个特定版本的PHP到你的开发环境的方法,结果发现它破坏了你之前设置的一切?
别担心,DAMP就在这里减轻你的痛苦。
目的
本项目旨在提供一个基于Docker的易于启动的网页开发环境,让你专注于项目,而不是花费大量时间在设置本地开发环境上,因为生产服务器运行的是一个非常具体的PHP版本,而你本地机器上没有,或者它会破坏你本地安装的PHP版本等。
相反,你现在可以简单地将DAMP包添加到你的项目中——你在使用composer对吧?——在dotenv文件中配置设置,然后启动Docker容器。
作为额外奖励,你将获得一个MailHog容器,允许你测试项目中所有基于电子邮件的事情。无需担心设置MTA或害怕发送电子邮件到实际收件人,MailHog会捕获通过PHP的mail()
函数发送的所有电子邮件。
安装
要将DAMP安装到您的项目中,请将其作为开发需求添加
composer require --dev troggybrains/damp
安装包后,在您的项目中初始化DAMP
./vendor/bin/damp init
这将创建一个名为docker-compose.yml
的符号链接和一个名为.env
的文件在您的项目根目录下。如果您已经在项目根目录中有一个.env
,您必须将vendor/troggybrains/damp/.env.dist
的内容附加到该文件中
cat vendor/troggybrains/damp/.env.dist >>./.env
此外,将在您的项目根目录下创建一个damp.d
文件夹。此文件夹由DAMP使用,以便您为您的服务存储任意数据。
配置
现在您已安装DAMP,剩下的就是将.env
中的变量修改为您的需求。所有变量都在.env
中进行了说明,所以您不需要并行阅读一些文档。
不过,让我解释一下最重要的变量。
PROJECT_NAME
定义了您项目的名称以及为您的项目构建的容器名称。设置一个唯一值非常重要,否则您的项目将尝试共享容器,最终会导致问题。PHP_VERSION
设置您的项目将运行的PHP版本。这是DAMP的真正优势和目的。查看可用的PHP Docker镜像以检查您可以处理哪些版本。
请注意,只有以-apache
结尾的镜像标签才受DAMP支持。MYSQL_VERSION
如果您可以选择运行的PHP版本,您也应该能够选择运行的MySQL版本。这就是这个变量的含义。
请查看 MySQL Docker 镜像,以确认您可以使用哪些版本。
完成操作后,将 docker-compose.yml
和 .env
添加到您的版本控制系统中,以便您的同事也能从配置中受益。
您可能希望通过域名(例如 http://myproject.test/
)访问您的项目。由于 DAMP 没有提供某种类型的域名服务器,您必须自行处理域名解析。不过,这很简单,只需将类似以下行添加到您本地的 /etc/hosts
文件中:
127.0.0.1 myproject.test www.myproject.test
保存文件,这样就完成了,无需重启任何服务。
运行
一旦您在 .env
中配置了变量,您就可以启动 DAMP 了。
除非您已将 HTTPD_PORT
设置为自定义值,否则 web 服务器将绑定到您的机器的端口 80,因此在启动 DAMP 之前,您必须停止已绑定到该端口的任何服务(例如 Apache、NginX、lighttpd)。
截至目前,web 服务器容器被设计为捕获所有指向 HTTPD_PORT
的请求,因此同时运行多个项目环境尚不可行。不过,这将会很快实现,同时还将支持 HTTPS。
启动
要启动 DAMP,只需执行以下命令
./vendor/bin/damp start
请注意,由于这可能需要拉取适当的 Docker 镜像,总大小约 1Gb,首次启动 DAMP 可能需要一些时间。
停止
要停止 DAMP,请执行以下命令
./vendor/bin/damp stop
便利性
为了方便起见,并且由于 vendor
和 bin
文件夹的路径是可配置的,我们建议添加启动和停止作为 自定义命令。
为此,将以下行添加到您的 composer.json
文件中
{
...,
"scripts": {
"damp:start": "damp start",
"damp:stop": "damp stop"
}
}
您可以通过在命令行中执行 composer damp:start
和 composer damp:stop
来执行这些命令。Composer 将负责查找并执行适当的 damp
二进制文件。
执行 ./vendor/bin/damp composer
时会显示示例 scripts
块,从而允许以编程方式添加脚本。
服务
web
web
服务期望在项目根目录中找到 src
文件夹,该文件夹将被挂载为服务内部的文档根。如果 DAMP 启动时该文件夹不存在,它将自动创建。
遗憾的是,它将归 root
所有,您将无法写入该文件夹,因此您在启动 DAMP 之前应确保文件夹存在。如果您在创建文件夹之前启动了 DAMP,您将不得不停止 DAMP 并更改文件夹 src
的所有者。
此服务已预安装并启用以下 PHP 扩展
- intl
- gd
- mysqli
- soap
- xdebug
您可以为服务配置应具有哪个 Xdebug 主版本(2.x 或 3.x)。请注意,如果 PHP_VERSION
设置为任何大于或等于 PHP 8.x 的值,将 XDEBUG_MAJOR_VERSION
设置为 '2' 将没有效果,因为后者不受 Xdebug 2.x 支持。
默认情况下,Xdebug 已启用并配置为连接回,有关更多信息,请参阅 调试 部分。
此服务使用文件夹 damp.d/web
允许您自定义您的体验。
文件
php/project.ini
此文件被挂载到服务内部 PHP 的配置文件夹中,因此允许您随意自定义 PHP 设置。DAMP 确保此文件是最后加载的,从而确保您的设置覆盖所有之前的设置。
db
db
服务使用以下文件夹,这些文件夹应由init
命令在项目根目录下创建:
damp.d/db/dump
如果您希望DAMP自动填充您的项目数据库,可以将转储文件放在这里。有关此机制如何工作的更多信息,请参阅官方MySQL Docker镜像文档中的“初始化新实例”部分。damp.d/db/mysql
MySQL数据库文件将存储在这里。它们存储在挂载文件夹中的原因是即使在容器被删除(例如,vendor/bin/damp stop -d
)时也应保持持久性。强烈建议将此文件夹忽略掉,因为此文件夹的内容可能相当大。
如果您想通过某种GUI访问数据库,此服务会在您的机器上绑定一个可配置的端口。
此服务作为您的项目MTA,并自动捕获通过PHP的mail()
发送的所有电子邮件。
它包含一个Web前端,您可以在其中查看电子邮件,可通过您机器的8025端口访问,例如https://:8025/。
如果您需要在项目中配置SMTP服务器,以下是您需要的信息:
- 主机:mail
- 端口:1025
请注意,这仅适用于web
服务,外部设备无法连接到此服务中运行的SMTP。
调试
如前所述,Xdebug已预安装、启用并配置为连接到调用它的客户端。
因此,开始调试会话只需设置一个查询参数或cookie即可,具体方法请参阅这里。
手动设置查询参数/cookie可能会变得相当麻烦,尤其是在尝试逐步调试AJAX调用时,因此您应考虑安装一个浏览器插件来自动执行此操作(如这里所述)。
查找您的IDE文档,以获取有关如何设置远程调试的详细信息。
工具
待定
待办事项
- 创建项目域仅捕获
- 添加HTTPS支持
- 改进文档