joomlatools/server

适用于Joomla CMS、WordPress和Joomlatools Pages的云原生开发环境

安装次数: 16

依赖项: 0

建议者: 0

安全: 0

星星: 5

关注者: 3

分支: 5

开放问题: 13

语言:Shell

类型:项目

dev-master 2022-11-06 00:55 UTC

This package is auto-updated.

Last update: 2024-09-15 17:29:08 UTC


README


Joomlatools Server

为Joomla开发的云原生开发环境

php version GitPod badge

欢迎来到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支持GitHubGitLabBitbucket,并且

  1. 安装Gitpod Chrome或Firefox扩展,并在工具栏中点击Gitpod按钮。
  2. 转到http://gitpod.io#[my-repo-url-goes-here]

您可以在以下位置找到Gitpod的所有文档:https://www.gitpod.io/docs/

Gitpod 示例:如果您想在 Gitpod 中试用此仓库,只需点击此按钮,即可在 Gitpod 中启动 Joomlatools Server 并自动安装最新版本的 Joomla。

Launch Joomla 4 in Gitpod

架构

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_APIKEYAPP_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)端点

状态

信息

文档

您可以在wiki中找到Joomlatools Server的所有文档。祝您编码愉快!

贡献

Joomlatools Server是一个开源的、社区驱动的项目。欢迎来自每个人的贡献。我们有贡献指南,以帮助您开始。

贡献者

请参阅贡献者列表。

许可

Joomlatools Server是开源软件,根据AGPLv3许可证授权。

社区

跟踪开发社区新闻。

⬆ 返回顶部