joomlatools / server
适用于Joomla CMS、WordPress和Joomlatools Pages的云原生开发环境
This package is auto-updated.
Last update: 2024-09-15 17:29:08 UTC
README
Joomlatools Server
为Joomla开发的云原生开发环境欢迎来到Joomlatools Server代码库,这是我们为Joomla CMS、WordPress和Joomlatools Pages开发的本土化云原生开发环境。
Joomlatools Server是什么?
Joomlatools Server是一个专为使用Joomla CMS和Joomlatools Pages进行网站开发而优化的Docker容器,支持macOS、Linux和Windows(通过WSL2)。
它支持Joomla 3和4,可以用作本地/远程开发环境。您可以使用Docker Desktop本地运行它,或使用Gitpod远程运行。
入门指南
安装
入门非常简单,首先您需要在本地机器上安装源代码或创建一个新的Git仓库(如果您想使用Gitpod)。
通过下载
获取代码的最简单方法是下载它。点击代码
按钮,选择下载Zip
或使用以下终端命令:
curl https://github.com/joomlatools/joomlatools-server/archive/refs/heads/master.tar.gz | tar -xz
通过Composer
您也可以通过在终端中发出Composer create-project
命令来下载Joomlatools Server:
composer create-project joomlatools/server [directory] --stability dev
更多信息:[https://getcomposer.org.cn/doc/03-cli.md#create-project](https://getcomposer.org.cn/doc/03-cli.md#create-project)
通过克隆
您还可以通过在终端中发出以下命令使用Git克隆存储库:
git clone https://github.com/joomlatools/joomlatools-server
更多信息:[https://githubdocs.cn/en/repositories/creating-and-managing-repositories/cloning-a-repository](https://githubdocs.cn/en/repositories/creating-and-managing-repositories/cloning-a-repository)
通过分支
最后,您还可以通过GitHub通过用户界面进行存储库的分支操作。更多信息:[https://githubdocs.cn/en/get-started/quickstart/fork-a-repo#fork-an-example-repository](https://githubdocs.cn/en/get-started/quickstart/fork-a-repo#fork-an-example-repository)
使用自己的IDE
请确保您已安装Docker Desktop,并在本地安装了此存储库。转到您的安装根目录,在终端中执行以下命令
docker compose up
使用Gitpod IDE
Gitpod提供了一种使用VSCode在浏览器中直接开发Joomlatools Server的简单方法。要开始,请确保您已克隆或分支此存储库,Gitpod支持GitHub、GitLab或Bitbucket,并且
- 安装Gitpod Chrome或Firefox扩展,并在工具栏中点击
Gitpod
按钮。 - 转到
http://gitpod.io#[my-repo-url-goes-here]
您可以在以下位置找到Gitpod的所有文档:https://www.gitpod.io/docs/
Gitpod 示例:如果您想在 Gitpod 中试用此仓库,只需点击此按钮,即可在 Gitpod 中启动 Joomlatools Server 并自动安装最新版本的 Joomla。
架构
Joomlatools Server 以多进程 Docker 容器的方式运行应用程序。使用 S6 overlay 监督进程。虽然 supervisord 等初始化系统更为知名,但 s6 更强大、轻量级、易于使用,并且与 docker(例如避免 pid 1 / 僵尸进程问题)配合良好。
每个应用程序都是基于 joomlatools-server
基础镜像构建的。它包含以下内容:
可选
工具
多进程 Docker
一个常见的 Docker 格言是“每个容器一个进程”。在一个 Docker 容器中运行多个进程并没有什么本质上的坏处。更抽象的“每个容器一件事”是我们的政策——容器应该做一件事,比如“运行聊天服务”或“运行 gitlab”。这可能涉及多个进程,这是可以的。
另一个原因是镜像作者避免使用进程监督器,因为他们认为进程监督器必须重新启动失败的服务,这意味着 Docker 容器永远不会死亡。
这实际上破坏了 Docker 生态系统——大多数镜像运行一个进程,该进程在出现错误时将退出。通过在错误时退出,您允许系统管理员以他们喜欢的任何方式处理失败。如果您的镜像永远不会退出,您现在需要一些替代的错误恢复和故障通知方法。
我们的政策是,如果“这件事”失败了,那么容器也应该失败。我们通过确定哪些进程可以重启,哪些应该使容器关闭来实现这一点。例如,如果 cron 或 syslog 失败,您的容器很可能会无副作用地重新启动它,但如果 ejabberd 失败,容器应该退出,以便系统管理员可以采取措施。
我们对“Docker 方式”的解释如下
容器应该做一件事。容器应该在“这件事”停止时停止。
S6 初始化系统就是为了做到这一点!Joomlatools Server 仍然像其他 Docker 镜像一样运行,并且与现有的镜像生态系统兼容。
Composer
应用程序只包含一个 composer /vendor
目录,该目录包含应用程序库、网站和服务使用的所有 PHP 库。该 /vendor
目录位于 /srv/www/vendor
,Composer 安装发生在 Docker 镜像构建阶段。
Composer 需求正在分两个阶段处理
1. 在镜像构建期间
在 ONBUILD
延迟期间,基础定义了最小的 Composer 需求,而扩展自基础的应用程序可以定义额外的需求。
使用 Composer 合并插件 合并以下位置的 composer.json 文件
/srv/www/config/composer/*.json
/var/www/composer.json
/srv/www/services/composer.json
/var/www/services/composer.json
/srv/www/sites/composer.json
/var/www/sites/composer.json
在镜像构建期间,当运行 Composer 时,它将解析这些文件并将它们的配置设置合并到基本配置中。然后,将使用此合并后的配置下载额外的库并生成自动加载器。
2. 在容器运行期间
如果应用以开发模式运行,APP_ENV
= development
,则将重新运行composer。这允许更新依赖关系并安装require-dev
依赖关系,而无需重新构建容器或手动触发composer。要使composer安装开发依赖项,请将COMPOSER_NO_DEV=0
添加到您的.env
文件或运行时环境中。
composer.lock
如果应用程序包含一个/var/www/compooser.lock
文件,composer将运行composer install
来安装特定版本的库;如果没有composer.lock
,它将运行composer update
来安装库的最新版本。
如果没有提供composer.lock
,则生成的composer.lock
将复制到/var/www/composer.lock
,以便于将其提交到仓库。删除现有的锁文件可确保依赖关系得到更新。
opcache preload
默认情况下,完整/vendor
目录将在opcache中预加载,除非禁用了APP_PRELOAD
。要忽略特定目录或文件路径的预加载,请添加一个/var/www/config/opcache/preload_ignore.php
文件,该文件返回一个数组,包含相对于.../vendor
要忽略的文件路径。
<?php return [ '/path/to/file', ];
环境
以下是一张应用程序环境变量的列表。每个变量都提供了默认值(或在未提供的情况下生成APP_APIKEY
和APP_NONCE
)。
-
APP_NAME=jt-base
应用程序名称(默认值) -
APP_ENV=production
应用程序环境 (默认) -
APP_USER=www-data
应用程序用户 (默认) -
APP_ROOT=/var/www
Apache根目录的位置 (默认) -
APP_DATA=/srv/www
公共代码的位置,例如/vendor等 (默认) -
APP_VOLUME=/mnt/www
持久存储的位置 (默认) -
APP_PRELOAD=on
定义是否从APP_DATA预加载opcache (默认) -
APP_CACHE=on
全局启用应用程序缓存 (默认) -
APP_DEBUG=off
全局启用应用程序调试模式 (默认) -
APP_HTTP=8080
应用程序监听的HTTP外部端口 (默认) -
APP_HTTP=8443
应用程序监听的HTTPS外部端口 (默认) -
APP_APIKEY=
Bearer身份验证令牌 (未提供时生成) -
APP_NONCE=
专门为应用程序生成的随机数 (未提供时生成)
所有环境变量的完整列表可以在.env.default中找到。
端点
服务器提供以下默认HTTP(s)端点
状态
- http://localhost:8080/__ping(php-fpm ping,仅本地)
- http://localhost:8080/__status-php(php-fpm状态,仅本地)
- http://localhost:8080/__status-apache(apache状态,仅本地)
信息
- http://localhost:8080/__info/php-info
- http://localhost:8080/__info/php-apc
- http://localhost:8080/__info/php-fpm
- http://localhost:8080/__info/php-opcache
- http://localhost:8080/__info/php-xdebug(如果启用了xdebug)
文档
您可以在wiki中找到Joomlatools Server的所有文档。祝您编码愉快!
贡献
Joomlatools Server是一个开源的、社区驱动的项目。欢迎来自每个人的贡献。我们有贡献指南,以帮助您开始。
贡献者
请参阅贡献者列表。
许可
Joomlatools Server是开源软件,根据AGPLv3许可证授权。
社区
跟踪开发社区新闻。
- 关注@joomlatoolsdev在Twitter上的动态
- 阅读Joomlatools开发者博客
- 订阅Joomlatools开发者通讯