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:
@@ -36,17 +36,17 @@ spec:
|
||||
- |
|
||||
echo "Starting PHP-FPM setup process..."
|
||||
|
||||
{{- if or .Values.composer.enabled .Values.selenium.enabled .Values.externalDatabase.enabled }}
|
||||
{{- if or .Values.composer.enabled .Values.selenium.enabled .Values.externalDatabase.enabled .Values.python.enabled }}
|
||||
# ========================================
|
||||
# APKパッケージのインストール
|
||||
# ========================================
|
||||
APK_PACKAGES=""
|
||||
|
||||
|
||||
{{- if or .Values.composer.enabled .Values.selenium.enabled }}
|
||||
# Composer本体に必要なパッケージ
|
||||
APK_PACKAGES="$APK_PACKAGES curl zip libzip-dev"
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{- if .Values.externalDatabase.enabled }}
|
||||
# MySQL/MariaDB接続に必要なパッケージ
|
||||
APK_PACKAGES="$APK_PACKAGES mysql-client mysql-dev"
|
||||
@@ -57,13 +57,25 @@ spec:
|
||||
APK_PACKAGES="$APK_PACKAGES msmtp ca-certificates"
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.python.enabled }}
|
||||
# Python本体に必要なパッケージ
|
||||
APK_PACKAGES="$APK_PACKAGES python3 py3-pip"
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.composer.additionalApkPackages }}
|
||||
# ユーザー指定の追加APKパッケージ
|
||||
# ユーザー指定の追加APKパッケージ(Composer用)
|
||||
{{- range .Values.composer.additionalApkPackages }}
|
||||
APK_PACKAGES="$APK_PACKAGES {{ . }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.python.additionalApkPackages }}
|
||||
# ユーザー指定の追加APKパッケージ(Python用)
|
||||
{{- range .Values.python.additionalApkPackages }}
|
||||
APK_PACKAGES="$APK_PACKAGES {{ . }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
# PHP拡張(gd / mbstring)の依存パッケージを自動的に追加
|
||||
{{- if .Values.composer.additionalPhpExtensions }}
|
||||
for ext in {{ join " " .Values.composer.additionalPhpExtensions }}; do
|
||||
@@ -172,6 +184,38 @@ spec:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.python.enabled }}
|
||||
{{- $pythonDir := .Values.python.venvDir | default "/venv" }}
|
||||
# ========================================
|
||||
# Python仮想環境のセットアップ
|
||||
# ========================================
|
||||
echo "Setting up Python virtual environment..."
|
||||
|
||||
# Python導入先(デフォルトはWebルート外の /venv、Composerと同様の使い捨て領域)
|
||||
# PHPからの呼び出し方: exec('{{ $pythonDir }}/bin/python3 /path/to/script.py 2>&1', $output, $exitCode);
|
||||
python3 -m venv {{ $pythonDir }}
|
||||
|
||||
{{- if .Values.python.useRequirementsTxt }}
|
||||
echo "Creating requirements.txt from values..."
|
||||
cat > /tmp/requirements.txt << 'REQUIREMENTS_TXT_EOF'
|
||||
{{- .Values.python.requirementsTxt | trim | nindent 14 }}
|
||||
REQUIREMENTS_TXT_EOF
|
||||
|
||||
echo "Installing Python packages from requirements.txt..."
|
||||
{{ $pythonDir }}/bin/pip install {{ .Values.python.installOptions }} -r /tmp/requirements.txt
|
||||
rm -f /tmp/requirements.txt
|
||||
|
||||
{{- else if .Values.python.packages }}
|
||||
echo "Installing Python packages..."
|
||||
{{- range .Values.python.packages }}
|
||||
{{ $pythonDir }}/bin/pip install {{ $.Values.python.installOptions }} "{{ . }}"
|
||||
{{- end }}
|
||||
|
||||
{{- else }}
|
||||
echo "No Python package configuration found, virtual environment created without additional packages"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.smtp.enabled }}
|
||||
# ========================================
|
||||
# SMTP設定(msmtp)
|
||||
|
||||
Reference in New Issue
Block a user