ashtokalo / lampeton
在 Docker 环境下启动 LAMP 应用程序骨架,使开发变得简单。
This package is auto-updated.
Last update: 2024-09-26 19:12:53 UTC
README
在 Docker 环境下启动 LAMP 应用程序骨架,使开发变得简单。
此模板提供经典的 LAMP Docker 环境来编写任何 PHP 项目。它只包含两个服务 web
和 db
。其中 web
是 Debian 的 Apache httpd,与 PHP 8.0 或 7.4(作为 mod_php)结合使用,并默认使用 mpm_prefork。而 db
是一个包含一个数据库的 MySQL 5.7。
还有其他可用的模板。
目录结构
config contains all configuration files
docker contains resources to build docker environments
web contains Apache httpd in conjunction with PHP
runtime contains files generated during runtime
logs contains logs from Apache, PHP and SMTP services
src contains the application code
web contains the entry script and Web resources
安装
最好使用 Composer 来开始开发。您可以使用以下命令尝试
composer create-project -s dev --prefer-dist ashtokalo/lampeton app
该命令会创建 app
目录(您可以选择不同的名称)并使用此项目模板。否则,您可以下载并从 仓库 的主分支中提取文件。
最后,您可以使用 Docker 命令立即启动项目
docker-compose up
或以后台模式运行
docker-compose up -d
第一次启动可能需要一些时间,因为它需要下载 web
和 db
服务所需的镜像。
用法
该模板假定所有项目源代码都将存储在 src
目录中,而只有入口脚本 index.php
和一些静态资源将被放置在 web
目录中。项目的 web
目录用作 Apache 的文档根,因此其他文件永远不会通过 HTTP 可用。如果请求的文件或目录在 [https://] 中不存在,则任何对文件或目录的请求都将重定向到 web/index.php
。默认的 HTTP 端口是 80,并且可以配置。
配置文件可以放置在 config
目录中,以将它们全部放在一个地方。您可以从 config/php.env
开始,使用键值属性来配置应用程序。这些值将通过 PHP 的 getenv()
和 Apache 的 SetEnv 在 Apache 中使用。
默认情况下还有几个可用的环境变量
MYSQL_HOST
- MySQL 的主机名,默认为mysql
;MYSQL_PORT
- 连接到 MySQL 的端口号,默认为3306
;MYSQL_USER
- 连接到 MySQL 的用户,默认为root
;MYSQL_PASSWORD
- 连接到 MySQL 的密码,默认为空;MYSQL_DATABASE
- MySQL 中数据库的名称,默认为dbname
。
目录 runtime
用于存储运行时资源,如缓存、上传的文件等。默认情况下,只有一个目录 runtime/mysql
由 mysql
服务使用来存储数据库文件。此目录在启动时创建。
所有服务和应用程序日志可能都存储在 logs
目录中。此目录在启动时创建,可能包含以下文件
logs/apache-access.log
- Apache 请求日志的合并logs/apache-error.log
- Apache 错误日志logs/php-error.log
- PHP 错误日志logs/msmtp.log
- sendmail (msmtp) 日志
PHP在Apache和docker容器web
中作为mod_php工作。默认情况下,容器使用来自Docker Hub的预构建镜像。你可能想要更改镜像或其功能,因此镜像源位于docker\web
。该镜像包含SMTP客户端,并允许在命令行中使用sendmail
以及在PHP中通过mail()
函数发送电子邮件,前提是docker-compose.yml
中提供了有效的SMTP凭证。
大多数选项可以通过覆盖docker-compose.yml
进行更改。请参考示例配置。你需要将文件复制到docker-compose.override.yml
以在此处进行更改。更改PHP版本或时区可能需要构建镜像
docker-compose build
其他更改可能需要重启项目
docker-compose down
docker-compose up
你可能想从命令行运行一些应用程序脚本
docker-compose exec web php src/Example.php
要访问MySQL,你可以运行以下命令
docker-compose exec db mysql
默认情况下,root密码为空。你可能想使用其他客户端来获取对数据库的访问权限。
该项目已包含最新的Composer,具有PSR-4自动加载映射,并且src
目录已映射到app
命名空间。请记住在composer.json
中更改项目名称、描述和作者为你的信息。祝你编码愉快!
贡献
欢迎通过Github的拉取请求进行贡献
-
记录任何行为变更 - 确保将
README.md
和其他相关文档保持最新。 -
创建功能分支 - 不要要求从你的主分支拉取。
-
每个功能一个拉取请求 - 如果你想要做更多的事情,请发送多个拉取请求。
-
发送清晰的历史记录 - 确保你的拉取请求中的每个单独的提交都是有意义的。如果你在开发过程中必须做出多个中间提交,请在提交之前压缩它们。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证。