feat: Python導入オプションを追加 (v8.5.8-a)
Helm Chart Release / release-chart (push) Successful in 5s

PHPからPythonスクリプトを呼び出す用途向けに、values.yamlの設定
だけでPython仮想環境(venv)を導入できるようにした。既存のComposer
サポートと同じ設計方針(デフォルト導入先はWebルート外・PVC非マウ
ントの使い捨て領域、packages/useRequirementsTxtの二択、
additionalApkPackagesでネイティブ拡張ビルド対応)を踏襲。

- values.yaml: python セクション新設
- templates/deployment.yaml: python3/py3-pipのAPKインストール、
  venv構築、pip install処理を追加(requirements.txtの展開は
  trim | nindent 14 でYAML破壊を回避、v8.5.6-dと同じ手法)
- README.md: パラメータ表・使用例(例12)・注意事項を追加

PHPからは exec('/venv/bin/python3 script.py') で呼び出す。

自動更新ワークフローによりPHP 8.5.8へのフルリリース(v8.5.8)が
先行して行われたため、本機能はそのタグの上に手動リリース 8.5.8-a
として適用する。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 21:23:20 +09:00
co-authored by Claude Fable 5
parent 6e600bb308
commit 3d384ab72e
6 changed files with 208 additions and 5 deletions
+55
View File
@@ -138,6 +138,30 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
| `composer.additionalPhpExtensions` | 追加PHP拡張 | `[]` |
| `composer.additionalApkPackages` | 追加APKパッケージ | `[]` |
### Python設定(オプション)
PHPからPythonスクリプトを呼び出す用途(データ処理・機械学習ライブラリの利用など)向けに、Python仮想環境(venv)を導入できます。
| パラメータ | 説明 | デフォルト |
|-----------|------|-----------|
| `python.enabled` | Python有効化 | `false` |
| `python.venvDir` | venv導入先ディレクトリ(`{venvDir}/bin/python3` | `"/venv"` |
| `python.packages` | pipでインストールするパッケージ | `[]` |
| `python.useRequirementsTxt` | requirements.txt使用 | `false` |
| `python.requirementsTxt` | requirements.txtの内容 | `"requests>=2.31.0"` |
| `python.installOptions` | pip installオプション | `"--no-cache-dir"` |
| `python.additionalApkPackages` | 追加APKパッケージ(ネイティブ拡張のビルド用) | `[]` |
> **📌 Python導入先について**
> Composerと同様、デフォルトの `/venv` は**Webルート外かつPVCにマウントされない使い捨て領域**です。Pod再起動のたびにクリーンな仮想環境へ再構築されます。PVCに永続化したい場合は `python.venvDir` に `/var/www` 配下(例: `/var/www/venv`)を指定してください。
>
> PHPコードからは `exec()` 等で呼び出します:
> ```php
> exec('/venv/bin/python3 /var/www/scripts/process.py 2>&1', $output, $exitCode);
> ```
>
> **⚠️ 注意**: `numpy` や `pillow` など、Alpine(musl)向けの事前ビルド済みwheelが無いパッケージは、Pod起動のたびにソースからビルドされ、Raspberry Pi等のARM環境では起動に数分〜十数分かかる場合があります。ビルドに必要なパッケージ(`gcc`, `musl-dev`, `python3-dev` 等)は `python.additionalApkPackages` に指定してください。永続化(`venvDir`をPVC配下に)すれば再起動のたびの再ビルドを回避できますが、使い捨てによるクリーン環境維持のメリットとのトレードオフになります。
### Selenium設定
| パラメータ | 説明 | デフォルト |
@@ -696,6 +720,37 @@ $headers = [
SmtpConfig::mail($to, $subject, $body, $headers, 'custom@your-domain.com');
```
### 例12: Python連携(requirements.txtを使用)
PHPからPythonスクリプトを呼び出してデータ処理を行う設定です。
```yaml
# values.yaml
python:
enabled: true
useRequirementsTxt: true
requirementsTxt: |
requests>=2.31.0
pandas>=2.0.0
installOptions: "--no-cache-dir"
```
**PHPでの使用例**:
```php
<?php
$script = escapeshellarg('/var/www/scripts/process.py');
exec("/venv/bin/python3 {$script} 2>&1", $output, $exitCode);
if ($exitCode === 0) {
echo implode("\n", $output);
} else {
error_log('Python script failed: ' . implode("\n", $output));
}
```
`/var/www/scripts/` のようなPVC上の非公開フォルダにPythonスクリプトを配置すれば、Web経由で公開されずに済みます(詳細はPVCマウント構成の項を参照)。
**デプロイ手順**:
```bash