بنقرة واحدة
container-dev
// Use when local PHP environment is unavailable. Fallback container-based development environment for yansongda/pay project.
// Use when local PHP environment is unavailable. Fallback container-based development environment for yansongda/pay project.
Use when reviewing PRs that add or modify a payment Provider in yansongda/pay - covers plugin pipeline, multi-tenant safety, signature verification, docs, and naming conventions.
Use when developing, testing, or adding new providers to yansongda/pay project. Covers commands, code standards, and provider implementation guide.
| name | container-dev |
| description | Use when local PHP environment is unavailable. Fallback container-based development environment for yansongda/pay project. |
当本地没有 PHP 环境时,使用 Apple Container 或 Docker 作为备选方案。
优先本地环境:先检查本地是否有 PHP/composer,有则直接使用。
容器作为备选:仅在本地环境不可用时使用容器。
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine
| 任务 | 命令 |
|---|---|
| 运行测试 | composer test |
| PHPStan 分析 | composer analyse |
| 代码风格检查 | composer cs-fix(仅检查,不修复) |
| 代码风格修复 | php-cs-fixer fix ./src |
| Composer 更新 | composer update --with-all-dependencies |
| 安装依赖 | composer install |
| Web 文档开发 | pnpm web:dev(需本地 Node 或 Node 容器) |
| Web 文档构建 | pnpm web:build(需本地 Node 或 Node 容器) |
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
COMMAND
若出现 DNS 解析失败(198.18.0.x 地址、连接超时),添加 DNS fix:
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && COMMAND"
# 测试(需 DNS fix + COMPOSER_ALLOW_SUPERUSER)
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && COMPOSER_ALLOW_SUPERUSER=1 composer test"
# PHPStan 分析
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && COMPOSER_ALLOW_SUPERUSER=1 composer analyse"
# 代码风格检查(仅查看差异)
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && COMPOSER_ALLOW_SUPERUSER=1 composer cs-fix"
# 代码风格修复
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && COMPOSER_ALLOW_SUPERUSER=1 php-cs-fixer fix ./src"
# Composer update
container run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf && composer update --with-all-dependencies"
Web 文档使用 pnpm,镜像中无 Node.js,需使用 Node 镜像或本地运行。
注意:web/package.json 要求 Node >=20.12.0,请确保使用的镜像版本满足此约束。
# 方案1: 本地运行(推荐)
cd web && pnpm web:dev
# 方案2: 使用 Node 容器(版本 >=20.12.0)
docker run --rm -v "$(pwd)/web":/app -w /app \
node:20-alpine \
sh -c "npm install -g pnpm && pnpm install && pnpm web:dev"
Docker 命令类似,通常不需要 DNS fix:
# 测试
docker run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
composer test
# PHPStan 分析
docker run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
composer analyse
# 代码风格检查
docker run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
composer cs-fix
# 代码风格修复
docker run --rm -v "$(pwd)":/app -w /app \
registry.cn-shenzhen.aliyuncs.com/yansongda/php:cli-8.3-alpine \
php-cs-fixer fix ./src
症状:
curl error 28 Connection timed out198.18.0.x(基准测试保留地址)原因:Container 系统 DNS 解析器异常。
解决:手动写入 nameserver 8.8.8.8 到 /etc/resolv.conf。
COMPOSER_ALLOW_SUPERUSER=1:容器内运行 composer 脚本必须composer cs-fix:仅检查并显示差异,不自动修复php-cs-fixer fix ./src:实际修复代码风格container system start