Composer (PHP) 如何融入 Docker 工作流程?
How does Composer (PHP) fit into a Docker workflow?
我希望了解将 Composer (PHP) 融入我的 Docker WordPress 开发工作流程的最佳实践。
我刚刚开始使用 Docker 进行 PHP/WordPress 开发以及 Composer。这是一个有点陡峭的学习曲线,但就我阅读大量指南和教程而言,这一切似乎都有意义。
我有 Docker 工作并且(我认为)很好地理解 how/why 来使用它。我知道 Docker 的一个好处是我不需要修改我的主机 OS 即安装 PHP 和 Composer 而且它可以很容易地四处移动,因为它包含了所有需要的东西.许多教程似乎都在主机 OS 上安装了 Composer 和 PHP,因为设置项目的第一步是使用 Composer 在主机 OS 上拉下诸如 Roots Bedrock 之类的东西,并且然后将此目录用作 Docker 中的卷。据我所知,这不是最好的方法,因为我正在修改主机 OS 并且项目容器不包含 运行.
所需的一切
我最好的猜测是使用一个专用的 Composer 容器,它将我的整个项目目录(包含我所有不同的项目)作为一个卷。然后我可以 运行 Composer 命令在这个容器中的适当的项目目录上。我的症结在于,每个项目容器都不包含 运行 (Composer) 所需的一切。所以我的下一个想法是每个项目都应该有一个自己的 Composer 容器。这将导致每个项目都具有以下容器:WordPress 官方图像、MariaDB、phpMyAdmin、Composer。我不确定这是否会使每个项目使用 4 个容器变得过大?
如果有人能够就执行此操作的最佳实践方法及其原因提出建议,我将不胜感激!谢谢! :)
如果我没听错,你希望能够在你的 wordpress php 项目中安装 运行 php composer 包。
如果您使用的是 macOS 或 Linux,有一个非常方便的东西叫做 homebrew。这将使您的生活更轻松地管理和更新系统上的软件包;比如node、composer等
按照 https://brew.sh/ 上的简单安装指南安装隐藏包。
我在 wordpress 中使用 composer php 包的经验,你必须将这些包(vendor 文件夹)上传到服务器(在你的主题文件夹中),这样你就可以通过autoload.php
文件。 与 node 和 javascript 不同,后者仅将您使用的必需模块编译到单个文件中。
所以我很确定您不需要在 docker 中创建一个额外的容器来处理这个问题,因为您将如何将作曲家包部署到您的生产环境中,这只会使事情变得复杂WordPress的。再加上更多的容器可能会减慢您的本地环境。
使用 composer.json
管理当前项目中的包,将每个项目视为自己的项目。
我是这样使用composer的(一旦你安装了homebrew)...
找到您想要使用的 php 包,例如 Netspot Carbon。
也在 packagist.org/packages/nesbot/carbon.
上
在你本地项目的wp主题目录下,运行包安装命令...
composer require nesbot/carbon
这将在您的主题目录中创建这些文件和文件夹(不是 .gitignore 文件)。
您可以使用此方法安装任意数量的软件包。
如果您查看 composer.json
文件,您会看到这个 json 数组...
{
"require": {
"nesbot/carbon": "^2.36"
}
}
所以如果你想删除一个作曲家包,只需从 json 数组中取出 vendor/package
键,然后 运行 像这样...
composer remove nesbot/carbon
最好不要手动编辑 composer.json
文件。使用 composer 命令构建此文件。
所以现在你已经安装了一些作曲家包,你需要将它们加载到你的主题中。
在顶部的 functions.php
中,或您打算调用包之前的任何位置,添加此 php 代码...
// load our composer autoloader
require 'vendor/autoload.php';
这个 autoload.php
文件是通过 composer 生成的,并加载所有已安装的包和包依赖项,
现在您可以像这样在您的主题 php 中使用包...(Netspot Carbon 示例)
use Carbon\Carbon;
$time = Carbon::createFromTimestampMs($cart['updated']['time'],'Asia/Dubai');
此外,您从不 需要将composer.json
和composer.lock
文件上传到您的服务器。您只需要部署 vendor
文件夹。
而你永远不会需要提交vendor
文件夹,你只需要提交composer.json
。使用此 json 文件,您可以使用此命令轻松重建 vendor
文件夹和 composer.lock
文件...
composer install
...将项目拖到另一台计算机时非常方便。
vendor 文件夹可能很重,对其进行版本控制毫无意义 (git),因为 composer.json
保存当前包版本。
我希望了解将 Composer (PHP) 融入我的 Docker WordPress 开发工作流程的最佳实践。
我刚刚开始使用 Docker 进行 PHP/WordPress 开发以及 Composer。这是一个有点陡峭的学习曲线,但就我阅读大量指南和教程而言,这一切似乎都有意义。
我有 Docker 工作并且(我认为)很好地理解 how/why 来使用它。我知道 Docker 的一个好处是我不需要修改我的主机 OS 即安装 PHP 和 Composer 而且它可以很容易地四处移动,因为它包含了所有需要的东西.许多教程似乎都在主机 OS 上安装了 Composer 和 PHP,因为设置项目的第一步是使用 Composer 在主机 OS 上拉下诸如 Roots Bedrock 之类的东西,并且然后将此目录用作 Docker 中的卷。据我所知,这不是最好的方法,因为我正在修改主机 OS 并且项目容器不包含 运行.
所需的一切我最好的猜测是使用一个专用的 Composer 容器,它将我的整个项目目录(包含我所有不同的项目)作为一个卷。然后我可以 运行 Composer 命令在这个容器中的适当的项目目录上。我的症结在于,每个项目容器都不包含 运行 (Composer) 所需的一切。所以我的下一个想法是每个项目都应该有一个自己的 Composer 容器。这将导致每个项目都具有以下容器:WordPress 官方图像、MariaDB、phpMyAdmin、Composer。我不确定这是否会使每个项目使用 4 个容器变得过大?
如果有人能够就执行此操作的最佳实践方法及其原因提出建议,我将不胜感激!谢谢! :)
如果我没听错,你希望能够在你的 wordpress php 项目中安装 运行 php composer 包。
如果您使用的是 macOS 或 Linux,有一个非常方便的东西叫做 homebrew。这将使您的生活更轻松地管理和更新系统上的软件包;比如node、composer等
按照 https://brew.sh/ 上的简单安装指南安装隐藏包。
我在 wordpress 中使用 composer php 包的经验,你必须将这些包(vendor 文件夹)上传到服务器(在你的主题文件夹中),这样你就可以通过autoload.php
文件。 与 node 和 javascript 不同,后者仅将您使用的必需模块编译到单个文件中。
所以我很确定您不需要在 docker 中创建一个额外的容器来处理这个问题,因为您将如何将作曲家包部署到您的生产环境中,这只会使事情变得复杂WordPress的。再加上更多的容器可能会减慢您的本地环境。
使用 composer.json
管理当前项目中的包,将每个项目视为自己的项目。
我是这样使用composer的(一旦你安装了homebrew)...
找到您想要使用的 php 包,例如 Netspot Carbon。
也在 packagist.org/packages/nesbot/carbon.
上在你本地项目的wp主题目录下,运行包安装命令...
composer require nesbot/carbon
这将在您的主题目录中创建这些文件和文件夹(不是 .gitignore 文件)。
您可以使用此方法安装任意数量的软件包。
如果您查看 composer.json
文件,您会看到这个 json 数组...
{
"require": {
"nesbot/carbon": "^2.36"
}
}
所以如果你想删除一个作曲家包,只需从 json 数组中取出 vendor/package
键,然后 运行 像这样...
composer remove nesbot/carbon
最好不要手动编辑 composer.json
文件。使用 composer 命令构建此文件。
所以现在你已经安装了一些作曲家包,你需要将它们加载到你的主题中。
在顶部的 functions.php
中,或您打算调用包之前的任何位置,添加此 php 代码...
// load our composer autoloader
require 'vendor/autoload.php';
这个 autoload.php
文件是通过 composer 生成的,并加载所有已安装的包和包依赖项,
现在您可以像这样在您的主题 php 中使用包...(Netspot Carbon 示例)
use Carbon\Carbon;
$time = Carbon::createFromTimestampMs($cart['updated']['time'],'Asia/Dubai');
此外,您从不 需要将composer.json
和composer.lock
文件上传到您的服务器。您只需要部署 vendor
文件夹。
而你永远不会需要提交vendor
文件夹,你只需要提交composer.json
。使用此 json 文件,您可以使用此命令轻松重建 vendor
文件夹和 composer.lock
文件...
composer install
...将项目拖到另一台计算机时非常方便。
vendor 文件夹可能很重,对其进行版本控制毫无意义 (git),因为 composer.json
保存当前包版本。