savvywombat / pilot
A docker wrapper to help with general PHP development
Requires
- php: ^8.0
README
一个轻量级的包装器,帮助在Docker中运行PHP项目。
Pilot包装了docker-compose
命令行工具,允许您使用.env
文件并将环境变量注入到您的docker-compose.yml
和Dockerfile
中,从而更轻松地设置和运行项目。
Pilot包含Dockerfiles
来设置和运行PHP 8.1和8.2,尽管扩展最少。如果您需要更多功能,可以使用Pilot与您自己的docker-compose.yml
和Dockerfiles
配置。
Pilot旨在帮助在开发环境中与Docker容器一起工作,不建议在生产环境中使用。
入门
要求
您需要在机器上安装Docker和docker-compose才能使Pilot工作。
安装
Pilot通过Composer提供
composer require savvywombat\pilot --dev
要开始,您可以复制Pilot提供的docker-compose.yml
文件
./vendor/bin/pilot install
或者您可以使用自己的docker-compose.yml
来配置您项目所需的服务。
环境变量
如果您的docker-compose.yml
文件和.env
文件位于同一位置,Pilot将导入它们,允许您在docker-compose.yml
和Dockerfile
中使用它们。
Pilot使用以下环境变量进行默认配置
- WWWGROUP - 使用文件权限的组ID(默认为当前用户组)
- WWWUSER - 使用文件权限的用户ID(默认为当前用户)
- NODE_VERSION - 默认pilot服务上安装的node版本(默认为18)
- HTTP_PORT - 访问默认pilot服务托管网站的外部端口(默认为80)
- VITE_PORT - 访问默认pilot服务托管vite服务器的外部端口(默认为5173)
docker-compose.yml中的环境变量
您可以在您的docker-compose.yml
中使用环境变量。建议您还定义一个默认值,以防变量在您的.env
中未定义。
例如,在默认Pilot配置中,我们像这样定义默认服务的端口
ports:
- '${HTTP_PORT:-80}:80'
- '${VITE_PORT:-5173}:5173'
如果没有在启动服务时定义HTTP_PORT
,则端口默认为80。
但是,如果您在.env
中定义了HTTP_PORT=8080
,则8080将是暴露的端口号。
Dockerfile中的环境变量
同样,您也可以在您的Dockerfile中使用环境变量,这样您就可以构建具有特定配置的服务。
命令
安装和构建服务
将Pilot提供的默认docker-compose.yml
复制到您的项目根目录。
./vendor/bin/pilot install
构建docker-compose.yml
中定义的服务。此命令是docker-compose build
的代理,因此可以接受相同的参数,例如--no-cache
。
./vendor/bin/pilot build-services
访问docker-compose命令
除了build
之外,所有docker-compose
命令都未经修改代理,可以使用相同的参数使用。使用Pilot确保在运行这些命令时尊重您在.env
中定义的环境变量。
运行服务或以监听模式启动它们
./vendor/bin/pilot up
./vendor/bin/pilot up -d
停止服务。
./vendor/bin/pilot down
停止服务并删除它们使用的任何卷
./vendor/bin/pilot down -v
构建和提供资产和内容
在项目中构建任何资源。默认情况下,它运行npm run dev
命令。但是,您可以用BUILD_COMMAND
环境变量替换另一个命令行脚本
./vendor/bin/pilot build
在开发过程中提供内容。此命令包装了PHP内置的Web服务器,不应作为生产Web服务器使用。该命令自动设置Web服务器的地址和端口,并接受根目录和路由脚本参数
./vendor/bin/pilot serve
./vendor/bin/pilot serve -t public
./vendor/bin/pilot serve -t public public/index.php
其他命令
在主服务上打开终端会话
./vendor/bin/pilot bash
在主服务上运行PHP脚本
./vendor/bin/pilot php ...
在主服务上运行Composer命令
./vendor/bin/pilot composer ...
在Node服务上运行npm命令(这默认为主服务,但您可以在docker-compose.yml
中定义一个单独的Node服务,并将NODE_SERVICE
设置为您的Node服务名称)
./vendor/bin/pilot npm ...
支持
请使用GitHub问题跟踪器报告问题。您也可以fork存储库并提交pull请求。
许可证
此软件包根据MIT许可证(MIT)授权。