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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user