Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1be71b95e4 | ||
|
|
3d384ab72e | ||
|
|
6e600bb308 | ||
|
|
4b2dece19b | ||
|
|
ffb760b913 | ||
|
|
85b7f69ccb | ||
|
|
be1c82e968 | ||
|
|
76a4a7874b | ||
|
|
e294f909c1 | ||
|
|
8ff43615fa | ||
|
|
112fae7059 | ||
|
|
5aa6583f69 | ||
|
|
982cc274d8 | ||
|
|
3fd01dd7e5 | ||
|
|
f48879446c |
@@ -0,0 +1,50 @@
|
||||
# Changelog - Version 8.5.6-a
|
||||
|
||||
## 変更点
|
||||
|
||||
### Composer導入先をWebルート外に変更(セキュリティ改善)
|
||||
|
||||
従来、Composerは Webルート `/var/www/html` 直下に導入されており、`composer.json` / `composer.lock` / `vendor/` がWeb経由で公開される状態でした。これらのファイルは公開する必要がなく、依存パッケージ構成の漏洩などセキュリティリスクとなるため、デフォルトの導入先をWebルート外の `/var/www` に変更しました。
|
||||
|
||||
#### 主な変更点
|
||||
|
||||
1. **values.yaml**
|
||||
- `composer.workingDir` パラメータを追加(デフォルト: `"/var/www"`)
|
||||
- Composerの導入先ディレクトリを任意のパスに変更可能
|
||||
|
||||
2. **templates/deployment.yaml**
|
||||
- Composer実行時の作業ディレクトリを `composer.workingDir` に変更(`mkdir -p` で自動作成)
|
||||
- `workingDir` がWebルート(`/var/www/html`)以外の場合、PVCの `composer` サブパスを `workingDir` にマウントし、vendor類を永続化(Pod再起動時の再構築を回避、従来と同等の永続化動作を維持)
|
||||
|
||||
3. **README.md**
|
||||
- `composer.workingDir` のパラメータ説明を追加
|
||||
- Composer導入先とautoload読み込みパスの解説を追加
|
||||
- Selenium使用例の `require_once` パスを更新
|
||||
|
||||
## PHPコードでの利用
|
||||
|
||||
```php
|
||||
// 新: デフォルトの読み込みパス
|
||||
require_once '/var/www/vendor/autoload.php';
|
||||
```
|
||||
|
||||
## 互換性
|
||||
|
||||
- **注意**: PHPコード内で `require_once '/var/www/html/vendor/autoload.php';` や相対パス `vendor/autoload.php` を使用している場合は、パスの修正が必要です。
|
||||
- 旧バージョンと同じ動作(Webルート直下に導入)へ戻す場合は、以下を指定してください:
|
||||
|
||||
```yaml
|
||||
composer:
|
||||
workingDir: "/var/www/html"
|
||||
```
|
||||
|
||||
- 既存のPVC内 `html/vendor` はそのまま残ります。不要であれば手動で削除してください。
|
||||
|
||||
## セキュリティ
|
||||
|
||||
- `vendor/` や `composer.json` / `composer.lock` がWebサーバー(Nginx)から配信されなくなり、依存パッケージ情報の漏洩や、vendor内スクリプトへの直接アクセスのリスクを排除できます。
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,45 @@
|
||||
# Changelog - Version 8.5.6-b
|
||||
|
||||
## 修正
|
||||
|
||||
### 旧Webルートにある既存 composer.json の自動移行
|
||||
|
||||
v8.5.6-a で Composer導入先を `/var/www/html` から `/var/www`(`composer.workingDir`)に変更しましたが、
|
||||
`packages` / `useComposerJson` を使わずに既存の `composer.json` を利用していた環境では、
|
||||
旧Webルートに残った `composer.json` を検出できず、
|
||||
「No composer configuration found, skipping package installation」でインストールがスキップされる問題がありました。
|
||||
|
||||
**対応**: 起動時に `workingDir` に `composer.json` が無く、旧Webルート `/var/www/html` に存在する場合、
|
||||
以下のファイルを自動的に `workingDir` へ移行してから `composer install` を実行するようにしました。
|
||||
|
||||
- `composer.json`
|
||||
- `composer.lock`(存在する場合)
|
||||
- `vendor/`(存在する場合 — 移動によりWebルートから排除され、公開リスクも解消されます)
|
||||
|
||||
移行はWebルートから該当ファイルが無くなるため一度だけ実行され、以降の再起動では通常フローで動作します。
|
||||
|
||||
### mbstring 拡張の依存パッケージ自動追加
|
||||
|
||||
`composer.additionalPhpExtensions` に `mbstring` を指定した場合、
|
||||
Alpine 上でのビルドに必要な `oniguruma-dev` が無く
|
||||
`configure: error: Package requirements (oniguruma) were not met` で失敗していました。
|
||||
|
||||
**対応**: GD拡張と同様に、`mbstring` 指定時は `oniguruma-dev` を自動的にAPKパッケージへ追加するようにしました。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-b -f values.yaml
|
||||
```
|
||||
|
||||
Pod再起動時に自動移行が実行されます。PHPコード側の読み込みパスの更新を忘れずに行ってください:
|
||||
|
||||
```php
|
||||
require_once '/var/www/vendor/autoload.php';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,36 @@
|
||||
# Changelog - Version 8.5.6-c
|
||||
|
||||
## 変更点
|
||||
|
||||
### Composerデフォルト導入先を `/var/www` から `/composer` に変更
|
||||
|
||||
v8.5.6-a で導入先をWebルート外の `/var/www` に変更しましたが、`/var/www` はWebルート `/var/www/html` の親ディレクトリであるため、ネストマウントの副産物としてPVCの `composer` サブパス内に空の `html/` ディレクトリが生成されていました(マウントポイント作成による正常動作だが紛らわしい)。
|
||||
|
||||
**対応**: デフォルトの `composer.workingDir` をWebルートと親子関係にない `/composer` に変更しました。これによりネストマウントが解消され、空フォルダは一切生成されなくなります。
|
||||
|
||||
## PHPコードでの利用
|
||||
|
||||
```php
|
||||
require_once '/composer/vendor/autoload.php';
|
||||
```
|
||||
|
||||
※ `values.yaml` のコメントにも読み込み方法を明記しています。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-c -f values.yaml
|
||||
```
|
||||
|
||||
## 互換性
|
||||
|
||||
- **注意**: v8.5.6-a/b で `/var/www/vendor/autoload.php` を参照するようにPHPコードを更新済みの場合は、`/composer/vendor/autoload.php` への再修正が必要です。
|
||||
- PVC上のデータは同じ `composer` サブパスを使用するため、既に移行済みの `composer.json` / `vendor/` はそのまま新しいマウント先(`/composer`)に引き継がれます。
|
||||
- 旧Webルート(`/var/www/html`)からの自動移行機能(v8.5.6-b)はそのまま動作します。
|
||||
- PVC上に残った空の `composer/html/` ディレクトリは、Pod再起動後は再作成されなくなるため、手動で削除すれば以後復活しません。
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,52 @@
|
||||
# Changelog - Version 8.5.6-d
|
||||
|
||||
## 修正
|
||||
|
||||
### useComposerJson 使用時の YAML parse error を修正
|
||||
|
||||
`composer.useComposerJson: true` を指定すると、以下のエラーでデプロイに失敗する問題を修正しました。
|
||||
|
||||
```
|
||||
YAML parse error on phpfpm/templates/deployment.yaml:
|
||||
error converting YAML to JSON: yaml: line 96: did not find expected key.
|
||||
```
|
||||
|
||||
**原因**: `templates/deployment.yaml` の heredoc 内で `{{ .Values.composer.composerJson }}` を
|
||||
インデント処理なしで展開していたため、複数行の JSON の2行目以降が行頭に出力され、
|
||||
YAML のブロックスカラー構造を破壊していました(`useComposerJson` 経路の潜在バグ)。
|
||||
|
||||
**対応**: `composerJson` / `composerLock` の展開を `trim | nindent 14` に変更し、
|
||||
ブロックスカラーのインデントに揃えて出力するようにしました。
|
||||
コンテナ内に書き出される `composer.json` / `composer.lock` は行頭からのクリーンな JSON になります。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-d -f values.yaml
|
||||
```
|
||||
|
||||
## 使用例
|
||||
|
||||
```yaml
|
||||
composer:
|
||||
enabled: true
|
||||
useComposerJson: true
|
||||
composerJson: |
|
||||
{
|
||||
"require": {
|
||||
"phpoffice/phpspreadsheet": "^2.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
PHPコードからの読み込み:
|
||||
|
||||
```php
|
||||
require_once '/composer/vendor/autoload.php';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,43 @@
|
||||
# Changelog - Version 8.5.6-e
|
||||
|
||||
## 変更点
|
||||
|
||||
### php-fpm コンテナのマウントを PVCルート → /var/www に変更
|
||||
|
||||
従来、php-fpm コンテナには PVC の `html` サブパスのみが `/var/www/html` にマウントされており、PVC上の他のディレクトリにはアクセスできませんでした。
|
||||
|
||||
**対応**: php-fpm コンテナには PVC の**ルート**を `/var/www` にマウントするように変更しました。
|
||||
|
||||
- `/var/www/html` — 公開フォルダ(nginxが配信するWebルート、従来どおり)
|
||||
- `/var/www/<任意>` — **非公開ファイルの格納先**(PHPから読み書き可能だがWebには公開されない)
|
||||
|
||||
nginx コンテナは従来どおり `html` サブパスのみをマウントするため、`html/` 以外のディレクトリはWebサーバーのファイルシステムに存在せず、公開されることはありません。設定ファイル・秘密鍵・アップロード受け皿など、公開したくないファイルの置き場として利用できます。
|
||||
|
||||
### Composer導入先(/composer)を使い捨て領域に変更
|
||||
|
||||
v8.5.6-c/d では `/composer` をPVCの `composer` サブパスに永続化していましたが、このマウントを廃止しました。
|
||||
|
||||
`/composer` はコンテナローカルの**使い捨て領域**となり、Pod再起動のたびに `composer install` でクリーンに再構築されます。万一不正アクセスで `vendor/` 内にマルウェアを書き込まれても、再起動で消滅します。
|
||||
|
||||
- 永続化したい場合は `composer.workingDir` に `/var/www/composer` など `/var/www` 配下を指定してください。
|
||||
- 再起動ごとにパッケージの再ダウンロードが発生します(クリーン環境維持とのトレードオフ)。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-e -f values.yaml
|
||||
```
|
||||
|
||||
## 互換性
|
||||
|
||||
- autoloadパスは変わりません: `require_once '/composer/vendor/autoload.php';`
|
||||
- PVC上に残っている旧 `composer/` サブパスのデータは、今後は `/var/www/composer` として見えます。不要であれば削除してください:
|
||||
```bash
|
||||
kubectl exec <pod> -c php-fpm -- rm -rf /var/www/composer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,29 @@
|
||||
# Changelog - Version 8.5.6-f
|
||||
|
||||
## 修正
|
||||
|
||||
### SMTPパスワードファイルをPHP-FPMワーカーから読めない問題を修正
|
||||
|
||||
`smtp.auth.enabled: true` でSMTP送信メールを設定した際、msmtpが以下のエラーで認証情報を取得できず、メール送信に失敗する問題を修正しました。
|
||||
|
||||
```
|
||||
cat: can't open '/etc/smtp-secrets/password': Permission denied
|
||||
```
|
||||
|
||||
**原因**: `/etc/smtp-secrets/password` を投影するSecretボリュームの `mode` が `0600`(所有者=rootのみ読み取り可)になっていました。msmtp は PHP の `mail()` 呼び出し経由で **PHP-FPMワーカー(`www-data` 等の非rootユーザー)** として実行されるため、rootのみ読み取り可のファイルを読めませんでした。
|
||||
|
||||
**対応**: `templates/deployment.yaml` の `smtp-secrets` ボリュームの `mode` を `0644`(全ユーザー読み取り可)に変更しました。このファイルはPod内にのみ存在し外部からアクセスできないため、許容できるトレードオフです。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-f -f values.yaml
|
||||
```
|
||||
|
||||
Pod再起動後、SMTP経由のメール送信が正常に動作するようになります。
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,46 @@
|
||||
# Changelog - Version 8.5.6-g
|
||||
|
||||
## 修正
|
||||
|
||||
### /etc/msmtprc をPHP-FPMワーカーから読めない問題を修正
|
||||
|
||||
v8.5.6-f で `/etc/smtp-secrets/password`(SMTPパスワード)の権限を修正しましたが、
|
||||
`/etc/msmtprc` 自体にも同様の問題が残っており、以下のエラーでメール送信が失敗していました。
|
||||
|
||||
```
|
||||
ignoring system configuration file /etc/msmtprc: Permission denied
|
||||
ignoring user configuration file /home/www-data/.msmtprc: No such file or directory
|
||||
falling back to default account
|
||||
msmtp: account default not found: no configuration file available
|
||||
exit:78
|
||||
```
|
||||
|
||||
**原因**: 起動スクリプト(rootで実行)が `/etc/msmtprc` を作成した後、`chmod 600` していたため、
|
||||
PHP-FPMワーカー(`www-data` 等の非root)から読めませんでした。
|
||||
|
||||
**対応**: `templates/deployment.yaml` の `chmod 600 /etc/msmtprc` を `chmod 644` に変更しました。
|
||||
`msmtprc` には実パスワードは含まれず(`passwordeval` で別ファイルから取得する設計)、
|
||||
ホスト名・ポート・ユーザー名などの設定のみのため、読み取り権限を広げても実害はありません。
|
||||
|
||||
## アップグレード手順
|
||||
|
||||
```bash
|
||||
helm repo update
|
||||
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-g -f values.yaml
|
||||
```
|
||||
|
||||
Pod再起動後、SMTP経由のメール送信が正常に動作するようになります。
|
||||
|
||||
### 動作確認
|
||||
|
||||
```bash
|
||||
kubectl exec -n <namespace> <pod> -c php-fpm -- su -s /bin/sh www-data -c \
|
||||
'printf "To: test@example.com\r\nFrom: noreply@example.com\r\nSubject: test\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nbody\r\n" | /usr/bin/msmtp -t --debug; echo "exit:$?"'
|
||||
```
|
||||
|
||||
`exit:0` で成功です。
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,58 @@
|
||||
# Changelog - Version 8.5.8-a
|
||||
|
||||
## 新機能
|
||||
|
||||
### Python導入オプションの追加
|
||||
|
||||
PHPからPythonスクリプトを呼び出す用途(データ処理・機械学習ライブラリの利用など)向けに、`values.yaml` の設定だけでPython仮想環境(venv)を導入できるようにしました。既存のComposerサポートと同じ設計方針を踏襲しています。
|
||||
|
||||
#### 主な変更点
|
||||
|
||||
1. **values.yaml**
|
||||
- `python` セクションを新設
|
||||
- `enabled`: Python有効化
|
||||
- `venvDir`: venv導入先(デフォルト `/venv` — Webルート外かつPVCにマウントされない使い捨て領域)
|
||||
- `packages` / `useRequirementsTxt` / `requirementsTxt`: pipパッケージ指定方法(Composerの `packages` / `useComposerJson` と同じ構造)
|
||||
- `installOptions`: pip installオプション(デフォルト `--no-cache-dir`)
|
||||
- `additionalApkPackages`: ネイティブ拡張ビルド用の追加APKパッケージ
|
||||
|
||||
2. **templates/deployment.yaml**
|
||||
- `python.enabled` 時に `python3` / `py3-pip` をAPKでインストール
|
||||
- `python3 -m venv` で仮想環境を構築
|
||||
- `useRequirementsTxt` / `packages` に応じてpipインストールを実行
|
||||
- `requirementsTxt` の複数行内容は `trim | nindent 14` で展開(v8.5.6-d のComposer修正と同じ手法でYAML破壊を回避)
|
||||
|
||||
3. **README.md**
|
||||
- パラメータ表・使用例(例12)を追加
|
||||
- Alpine(musl)向け事前ビルドwheelが無いパッケージ(numpy等)はビルドに時間がかかる旨の注意書きを追加
|
||||
|
||||
## 設計方針(Composerとの一貫性)
|
||||
|
||||
- デフォルトの `/venv` はPVCにマウントされず、**Pod再起動のたびにクリーンな環境へ再構築される使い捨て領域**です。不正アクセスで書き込まれても再起動で消えます。
|
||||
- 永続化したい場合は `python.venvDir` に `/var/www` 配下のパスを指定してください(例: `/var/www/venv`)。
|
||||
|
||||
## 使用例
|
||||
|
||||
```yaml
|
||||
python:
|
||||
enabled: true
|
||||
useRequirementsTxt: true
|
||||
requirementsTxt: |
|
||||
requests>=2.31.0
|
||||
pandas>=2.0.0
|
||||
```
|
||||
|
||||
PHPからの呼び出し:
|
||||
|
||||
```php
|
||||
exec('/venv/bin/python3 /var/www/scripts/process.py 2>&1', $output, $exitCode);
|
||||
```
|
||||
|
||||
## 互換性
|
||||
|
||||
- デフォルトは `enabled: false` のため、既存環境への影響はありません。
|
||||
|
||||
---
|
||||
|
||||
**リリース日**: 2026-07-19
|
||||
**担当**: プロサーバーエンジニア(Claude)
|
||||
@@ -0,0 +1,92 @@
|
||||
# CLAUDE.md — phpfpm Helm Chart
|
||||
|
||||
## リポジトリ概要
|
||||
|
||||
Raspberry Pi などのベアメタルで稼働することを想定した、Kubernetes 上で動作する Nginx + PHP-FPM の Helm チャート。
|
||||
|
||||
- **Gitea リポジトリ**: `ssh://git@192.168.9.65/helmchart/phpfpm`
|
||||
- **Helm リポジトリ**: `https://git.cafepieters.com/api/packages/helmchart/helm`
|
||||
|
||||
## 実行環境について
|
||||
|
||||
**PHP の実行環境(インタープリタ)はこのリポジトリには含まれていない。**
|
||||
チャートは `docker.io/php:<tag>-fpm-alpine` の公式イメージを Kubernetes 上で起動するものであり、PHP コードそのものは PVC(`/var/www/html`)に別途配置する必要がある。
|
||||
|
||||
## Git コミット情報
|
||||
|
||||
| 項目 | 値 |
|
||||
|------|-----|
|
||||
| 名前 | Claude |
|
||||
| メール | claude@cafepieters.com |
|
||||
| SSH キー | `P:\Claude\.ssh\id_claude` |
|
||||
|
||||
## チャート改修履歴
|
||||
|
||||
### Python導入オプションの追加(2026-07-19, v8.5.8-a)
|
||||
|
||||
`python` セクションを新設し、`values.yaml` の設定だけでPython仮想環境(venv)を導入可能にした。Composerと同じ設計方針(デフォルト導入先 `/venv` はPVC非マウントの使い捨て領域、`packages`/`useRequirementsTxt`の二択、`additionalApkPackages`でネイティブ拡張ビルド対応)。requirements.txtの展開は `trim | nindent 14`(v8.5.6-dのバグ修正と同じ手法)。PHPからは `exec('/venv/bin/python3 script.py')` で呼び出す。
|
||||
|
||||
なお、この改修中に自動更新ワークフローがPHP 8.5.8へのフルリリース(v8.5.8)を実行したため、本機能はそのタグの上に手動リリース `8.5.8-a` として適用した。
|
||||
|
||||
**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.8-a.md`
|
||||
|
||||
### /etc/msmtprc の権限を0600→0644に修正(2026-07-19, v8.5.6-g)
|
||||
|
||||
v8.5.6-f のフォローアップ。`/etc/smtp-secrets/password` の権限修正だけでは不十分で、起動スクリプトが `cp` 後に `chmod 600` していた `/etc/msmtprc` 自体もrootのみ読み取り可のままだった(msmtp: account default not found, exit:78)。`chmod 644` に変更。msmtprcには平文パスワードは含まれない(passwordeval経由で別ファイル参照)ため実害なし。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `Chart.yaml`, `CHANGELOG-8.5.6-g.md`
|
||||
|
||||
### SMTPパスワードSecretの権限を0600→0644に修正(2026-07-19, v8.5.6-f)
|
||||
|
||||
`smtp-secrets` ボリュームの `mode: 0600` が原因で、rootではなく `www-data`(PHP-FPMワーカー)として動く msmtp が `/etc/smtp-secrets/password` を読めず、SMTP認証に失敗する不具合を修正。`0644` に変更(Pod内にしか存在しないファイルのため許容範囲)。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `Chart.yaml`, `CHANGELOG-8.5.6-f.md`
|
||||
|
||||
### PVCルートを /var/www にマウント + /composer を使い捨て化(2026-07-19, v8.5.6-e)
|
||||
|
||||
php-fpm コンテナのマウントを「`html` サブパスのみ」から「PVCルート → `/var/www`」に変更。`html/` は公開フォルダ、それ以外(`/var/www/<任意>`)は非公開ファイルの格納先として使える。nginx は `html` サブパスのみマウントするため非公開分は公開されない。あわせて `/composer` のPVC永続化マウントを廃止し、Pod再起動ごとにクリーン再構築される使い捨て領域とした(マルウェア混入対策、ユーザー要望)。永続化したい場合は `workingDir` に `/var/www/composer` 等を指定。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `values.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-e.md`
|
||||
|
||||
### useComposerJson の YAML parse error 修正(2026-07-19, v8.5.6-d)
|
||||
|
||||
`useComposerJson: true` 指定時、heredoc 内の `{{ .Values.composer.composerJson }}` がインデント無しで展開され、複数行JSONの2行目以降がブロックスカラーを破壊して YAML parse error になる潜在バグを修正。`trim | nindent 14` で展開するよう変更(`composerLock` も同様)。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `Chart.yaml`, `CHANGELOG-8.5.6-d.md`
|
||||
|
||||
### Composerデフォルト導入先を /composer に変更(2026-07-19, v8.5.6-c)
|
||||
|
||||
`/var/www` はWebルート `/var/www/html` の親のため、ネストマウントでPVCの `composer` サブパス内に空の `html/` が生成されていた。デフォルトをWebルートと親子関係にない `/composer` に変更してネストを解消。autoloadは `require_once '/composer/vendor/autoload.php';`(values.yaml のコメントにも明記)。
|
||||
|
||||
**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-c.md`
|
||||
|
||||
### 旧composer.jsonの自動移行 + mbstring依存の自動追加(2026-07-19, v8.5.6-b)
|
||||
|
||||
v8.5.6-a のフォローアップ。起動時に `workingDir` に `composer.json` が無く旧Webルート `/var/www/html` にある場合、`composer.json` / `composer.lock` / `vendor/` を自動移行する。また `additionalPhpExtensions` に `mbstring` 指定時、ビルドに必要な `oniguruma-dev` を自動追加(GDと同じ仕組み)。
|
||||
|
||||
なお、PVC上の `composer/html/`(空ディレクトリ)はネストマウントのマウントポイント作成による正常な副産物で、実害なし。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-b.md`
|
||||
|
||||
### composer.workingDir — Composer導入先のWebルート外への変更(2026-07-19, v8.5.6-a)
|
||||
|
||||
Composerの導入先をWebルート `/var/www/html` からWebルート外の `/var/www` に変更し、`vendor/` や `composer.json` がWeb経由で公開されないようにした。`values.yaml` の `composer.workingDir` で導入先を変更可能(旧動作に戻すには `"/var/www/html"` を指定)。導入先がWebルート以外の場合、PVCの `composer` サブパスをマウントして永続化する。
|
||||
|
||||
PHP側の読み込みは `require_once '/var/www/vendor/autoload.php';`。
|
||||
|
||||
**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-a.md`
|
||||
|
||||
### phpEnv — 汎用 PHP 環境変数サポート(2026-04-17)
|
||||
|
||||
`values.yaml` に `phpEnv` セクションを追加し、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せるようにした。
|
||||
|
||||
```yaml
|
||||
phpEnv:
|
||||
API_KEY: "your-api-key"
|
||||
STRIPE_SECRET: "sk_live_..."
|
||||
REDIS_URL: "redis://localhost:6379"
|
||||
```
|
||||
|
||||
PHP 側では `$_ENV['API_KEY']` または `getenv('API_KEY')` で取得できる。
|
||||
|
||||
**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md`
|
||||
+2
-2
@@ -2,6 +2,6 @@ apiVersion: v2
|
||||
name: phpfpm
|
||||
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
||||
type: application
|
||||
version: 8.5.5
|
||||
appVersion: "8.5.5"
|
||||
version: 8.5.9
|
||||
appVersion: "8.5.9"
|
||||
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
||||
|
||||
@@ -117,11 +117,20 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
|
||||
| `persistence.size` | ストレージサイズ | `1Gi` |
|
||||
| `persistence.accessMode` | アクセスモード | `ReadWriteOnce` |
|
||||
|
||||
> **📁 PVCマウント構成(php-fpmコンテナ)**
|
||||
> php-fpm コンテナには PVC の**ルート**が `/var/www` にマウントされます。
|
||||
>
|
||||
> - `/var/www/html` — **公開フォルダ**(nginxが配信するWebルート)
|
||||
> - `/var/www/<任意のフォルダ>` — **非公開の格納先**(PHPからは読み書きできるが、Web経由では公開されない)
|
||||
>
|
||||
> nginx コンテナは `html` サブパスのみをマウントするため、`html/` 以外のディレクトリはWebサーバーのファイルシステムに存在せず、設定ミスでも公開されることはありません。設定ファイル・秘密鍵・アップロード受け皿・ログなど、公開したくないファイルの置き場として利用できます。
|
||||
|
||||
### Composer設定
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
|-----------|------|-----------|
|
||||
| `composer.enabled` | Composer有効化 | `false` |
|
||||
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php`) | `"/composer"` |
|
||||
| `composer.packages` | インストールパッケージ | `[]` |
|
||||
| `composer.useComposerJson` | composer.json使用 | `false` |
|
||||
| `composer.composerJson` | composer.json内容 | `""` |
|
||||
@@ -129,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設定
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
@@ -147,6 +180,14 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
|
||||
| `externalDatabase.username` | ユーザー名 | `user` |
|
||||
| `externalDatabase.password` | パスワード | `pass` |
|
||||
|
||||
### PHP 汎用環境変数(phpEnv)
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
|-----------|------|-----------|
|
||||
| `phpEnv` | PHP-FPM コンテナに渡す任意の環境変数(キーと値のマップ) | `{}` |
|
||||
|
||||
PHP 側では `$_ENV['KEY']` または `getenv('KEY')` で取得できます。
|
||||
|
||||
### SMTP設定
|
||||
|
||||
| パラメータ | 説明 | デフォルト |
|
||||
@@ -229,6 +270,21 @@ persistence:
|
||||
size: 2Gi
|
||||
```
|
||||
|
||||
> **📌 Composerの導入先について**
|
||||
> Composerパッケージはデフォルトで**Webルート外**の `/composer` に導入されます(`composer.workingDir` で変更可能)。
|
||||
> `vendor/` や `composer.json` がWeb経由で公開されないため、情報漏洩などのセキュリティリスクを回避できます。
|
||||
>
|
||||
> `/composer` は**PVCにマウントされない使い捨て領域**です。Pod再起動のたびにクリーンな環境へ再構築されるため、万一不正アクセスでマルウェアを書き込まれても再起動で消え、常にクリーンなComposer環境を維持できます(PVCに永続化したい場合は `/var/www/composer` など `/var/www` 配下を指定)。
|
||||
>
|
||||
> PHPコードからは以下のように読み込みます:
|
||||
> ```php
|
||||
> require_once '/composer/vendor/autoload.php';
|
||||
> ```
|
||||
>
|
||||
> 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。
|
||||
>
|
||||
> **旧バージョンからのアップグレード**: 旧Webルートに `composer.json` / `composer.lock` / `vendor/` が残っている場合、Pod起動時に自動的に `workingDir` へ移行されます(v8.5.6-b以降)。
|
||||
|
||||
### 例3: composer.jsonを使用
|
||||
|
||||
```yaml
|
||||
@@ -322,7 +378,7 @@ resources:
|
||||
**PHPコード例**:
|
||||
```php
|
||||
<?php
|
||||
require_once '/var/www/html/vendor/autoload.php';
|
||||
require_once '/composer/vendor/autoload.php';
|
||||
|
||||
use Facebook\WebDriver\Remote\RemoteWebDriver;
|
||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||
@@ -564,7 +620,43 @@ helm install production-api cafepieters/phpfpm \
|
||||
--set externalDatabase.password=$(kubectl get secret db-password -o jsonpath='{.data.password}' | base64 -d)
|
||||
```
|
||||
|
||||
### 例10: SMTP設定によるメール送信
|
||||
### 例10: APIキーなどの任意環境変数を PHP に渡す(phpEnv)
|
||||
|
||||
`phpEnv` を使うと、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せます。
|
||||
|
||||
```yaml
|
||||
# values.yaml
|
||||
phpEnv:
|
||||
API_KEY: "your-api-key"
|
||||
STRIPE_SECRET: "sk_live_xxxxxxxxxxxxxxxx"
|
||||
REDIS_URL: "redis://localhost:6379"
|
||||
EXTERNAL_SERVICE_URL: "https://api.example.com"
|
||||
```
|
||||
|
||||
**PHPでの使用例**:
|
||||
|
||||
```php
|
||||
<?php
|
||||
// $_ENV または getenv() で取得
|
||||
$apiKey = getenv('API_KEY');
|
||||
$stripe = $_ENV['STRIPE_SECRET'];
|
||||
$redisUrl = getenv('REDIS_URL');
|
||||
|
||||
echo "API Key: " . $apiKey;
|
||||
```
|
||||
|
||||
**確認コマンド**:
|
||||
|
||||
```bash
|
||||
# 設定された環境変数を確認
|
||||
kubectl exec -it <pod-name> -c php-fpm -- env | grep -E "API_|STRIPE_|REDIS_"
|
||||
```
|
||||
|
||||
**注意事項**:
|
||||
- 機密性の高い値(APIキー、シークレット等)は `--set phpEnv.KEY=value` でデプロイ時に注入するか、Kubernetes の Secret を別途作成して参照することを推奨します。
|
||||
- `phpEnv` の値はすべてプレーンテキストとして環境変数に設定されます(externalDatabase の password のみ Secret 経由)。
|
||||
|
||||
### 例11: SMTP設定によるメール送信
|
||||
|
||||
PHPアプリケーションからSMTP経由でメール送信を行う設定です。
|
||||
|
||||
@@ -628,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
|
||||
|
||||
+86
-14
@@ -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,20 +57,35 @@ 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 }}
|
||||
|
||||
# GD拡張の依存パッケージを自動的に追加
|
||||
{{- 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
|
||||
if [ "$ext" = "gd" ]; then
|
||||
echo "GD extension detected, adding required dependencies..."
|
||||
APK_PACKAGES="$APK_PACKAGES libpng-dev libjpeg-turbo-dev freetype-dev"
|
||||
break
|
||||
fi
|
||||
if [ "$ext" = "mbstring" ]; then
|
||||
echo "mbstring extension detected, adding required dependencies..."
|
||||
APK_PACKAGES="$APK_PACKAGES oniguruma-dev"
|
||||
fi
|
||||
done
|
||||
{{- end }}
|
||||
@@ -106,8 +121,11 @@ spec:
|
||||
{{- if or .Values.composer.enabled .Values.selenium.enabled }}
|
||||
echo "Installing Composer..."
|
||||
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
|
||||
cd /var/www/html
|
||||
|
||||
# Composer導入先(デフォルトはWebルート外の /composer)
|
||||
# PHPからは require_once '{{ .Values.composer.workingDir | default "/composer" }}/vendor/autoload.php'; で読み込む
|
||||
mkdir -p {{ .Values.composer.workingDir | default "/composer" }}
|
||||
cd {{ .Values.composer.workingDir | default "/composer" }}
|
||||
|
||||
{{- if .Values.composer.enabled }}
|
||||
# ユーザー定義のComposer設定
|
||||
@@ -115,13 +133,13 @@ spec:
|
||||
# composer.jsonファイルを使用
|
||||
echo "Creating composer.json from values..."
|
||||
cat > composer.json << 'COMPOSER_JSON_EOF'
|
||||
{{ .Values.composer.composerJson }}
|
||||
{{- .Values.composer.composerJson | trim | nindent 14 }}
|
||||
COMPOSER_JSON_EOF
|
||||
|
||||
{{- if .Values.composer.composerLock }}
|
||||
echo "Creating composer.lock from values..."
|
||||
cat > composer.lock << 'COMPOSER_LOCK_EOF'
|
||||
{{ .Values.composer.composerLock }}
|
||||
{{- .Values.composer.composerLock | trim | nindent 14 }}
|
||||
COMPOSER_LOCK_EOF
|
||||
{{- end }}
|
||||
|
||||
@@ -141,6 +159,13 @@ spec:
|
||||
{{- end }}
|
||||
|
||||
{{- else }}
|
||||
# 旧Webルート(/var/www/html)に composer.json がある場合は移行(v8.5.6-a以前からのアップグレード対応)
|
||||
if [ ! -f composer.json ] && [ -f /var/www/html/composer.json ]; then
|
||||
echo "Migrating legacy composer files from /var/www/html to $(pwd)..."
|
||||
mv /var/www/html/composer.json ./composer.json
|
||||
if [ -f /var/www/html/composer.lock ]; then mv /var/www/html/composer.lock ./composer.lock; fi
|
||||
if [ -d /var/www/html/vendor ]; then mv /var/www/html/vendor ./vendor; fi
|
||||
fi
|
||||
# composer.jsonが既に存在する場合はそれを使用
|
||||
if [ -f composer.json ]; then
|
||||
echo "Found existing composer.json, running composer install..."
|
||||
@@ -159,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)
|
||||
@@ -166,8 +223,12 @@ spec:
|
||||
echo "Configuring SMTP for mail sending..."
|
||||
|
||||
# msmtprc設定ファイルをコピー
|
||||
# msmtpはPHP-FPMワーカー(www-data等の非root)から実行されるため、
|
||||
# rootが作成するこのファイルも読み取り可にする必要がある
|
||||
# (実パスワードはpasswordeval経由で別ファイルから取得するため、
|
||||
# msmtprc自体に平文パスワードは含まれない)
|
||||
cp /etc/smtp-config/msmtprc /etc/msmtprc
|
||||
chmod 600 /etc/msmtprc
|
||||
chmod 644 /etc/msmtprc
|
||||
|
||||
# PHP設定をphp.ini.d/に作成
|
||||
cat > /usr/local/etc/php/conf.d/99-smtp.ini << 'PHP_SMTP_EOF'
|
||||
@@ -187,9 +248,13 @@ spec:
|
||||
ports:
|
||||
- containerPort: 9000 # PHP-FPMは9000ポートでリッスン
|
||||
volumeMounts:
|
||||
# PVCルートを /var/www にマウント
|
||||
# - /var/www/html のみ nginx が公開(nginx側は html サブパスだけをマウント)
|
||||
# - それ以外(/var/www/<任意>)は非公開ファイルの格納先として利用可能
|
||||
# ※ Composer導入先(デフォルト /composer)は意図的にマウントしない:
|
||||
# Pod再起動のたびにクリーンな環境へ再構築される使い捨て領域とする
|
||||
- name: app-storage
|
||||
mountPath: /var/www/html
|
||||
subPath: html
|
||||
mountPath: /var/www
|
||||
{{- if and .Values.composer.enabled .Values.composer.useComposerJson }}
|
||||
- name: composer-config
|
||||
mountPath: /tmp/composer-init
|
||||
@@ -220,6 +285,10 @@ spec:
|
||||
name: {{ include "phpfpm.fullname" . }}-db-secret
|
||||
key: {{ include "phpfpm.fullname" . }}-db-key
|
||||
{{- end }}
|
||||
{{- range $key, $value := .Values.phpEnv }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.selenium.enabled }}
|
||||
- name: selenium
|
||||
image: "{{ .Values.image.selenium.registry }}/{{ .Values.image.selenium.repository }}:{{ .Values.image.selenium.tag }}"
|
||||
@@ -266,6 +335,9 @@ spec:
|
||||
items:
|
||||
- key: password
|
||||
path: password
|
||||
mode: 0600
|
||||
# 0600だとSecretボリュームの所有者はroot、
|
||||
# msmtpはPHP-FPMワーカー(www-data等の非root)から実行されるため読めない
|
||||
# → 全ユーザー読み取り可にする(ボリュームはPod内にしか存在しないため許容範囲)
|
||||
mode: 0644
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+65
-5
@@ -4,17 +4,17 @@ image:
|
||||
nginx:
|
||||
registry: docker.io
|
||||
repository: nginx
|
||||
tag: "1.29.8-alpine-perl"
|
||||
tag: "1.31.3-alpine-perl"
|
||||
pullPolicy: IfNotPresent
|
||||
php:
|
||||
registry: docker.io
|
||||
repository: php
|
||||
tag: "8.5.5-fpm-alpine3.23"
|
||||
tag: "8.5.9-fpm-alpine3.24"
|
||||
pullPolicy: IfNotPresent
|
||||
selenium:
|
||||
registry: docker.io
|
||||
repository: selenium/standalone-chromium
|
||||
tag: "147.0-chromedriver-147.0"
|
||||
tag: "150.0-chromedriver-150.0"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
@@ -84,7 +84,20 @@ nginx:
|
||||
composer:
|
||||
# Composerを使用するかどうか
|
||||
enabled: false
|
||||
|
||||
|
||||
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
|
||||
# デフォルトの /composer はWebルート外かつPVCにマウントされない「使い捨て」領域:
|
||||
# - vendor/ や composer.json がWeb経由で公開されない
|
||||
# - Pod再起動のたびにクリーンな環境へ再構築されるため、
|
||||
# 不正アクセスでマルウェアを書き込まれても再起動で消える
|
||||
#
|
||||
# 【重要】PHPコードからの autoload.php の読み込み方:
|
||||
# require_once '/composer/vendor/autoload.php';
|
||||
#
|
||||
# PVC上に永続化したい場合は /var/www 配下(例: "/var/www/composer")を指定
|
||||
# 旧来の動作(Webルート直下に導入)へ戻す場合は "/var/www/html" を指定
|
||||
workingDir: "/composer"
|
||||
|
||||
# Composerでインストールするパッケージ
|
||||
# packages配列が空の場合、composer.jsonを使用
|
||||
packages: []
|
||||
@@ -118,6 +131,44 @@ composer:
|
||||
# - "gd"
|
||||
# - "zip"
|
||||
|
||||
# Python設定(オプション、PHPからPythonスクリプトを呼び出す用途)
|
||||
python:
|
||||
# Pythonを使用するかどうか
|
||||
enabled: false
|
||||
|
||||
# Python仮想環境(venv)の導入先ディレクトリ
|
||||
# デフォルトの /venv はWebルート外かつPVCにマウントされない「使い捨て」領域:
|
||||
# - Pod再起動のたびにクリーンな環境へ再構築される(Composerと同じ設計)
|
||||
#
|
||||
# 【重要】PHPからのPython呼び出し方(execを利用):
|
||||
# exec('/venv/bin/python3 /path/to/script.py 2>&1', $output, $exitCode);
|
||||
#
|
||||
# PVC上に永続化したい場合は /var/www 配下(例: "/var/www/venv")を指定
|
||||
venvDir: "/venv"
|
||||
|
||||
# pipでインストールするパッケージ
|
||||
# packages配列が空の場合、requirements.txtを使用
|
||||
packages: []
|
||||
# - "requests>=2.31.0"
|
||||
# - "pillow"
|
||||
|
||||
# requirements.txtを使用する場合
|
||||
useRequirementsTxt: false
|
||||
|
||||
# requirements.txtの内容(useRequirementsTxt: trueの場合に使用)
|
||||
requirementsTxt: |
|
||||
requests>=2.31.0
|
||||
|
||||
# pip installのオプション
|
||||
installOptions: "--no-cache-dir"
|
||||
|
||||
# 追加のAPKパッケージ(ネイティブ拡張のビルドに必要な場合、例: numpy等)
|
||||
additionalApkPackages: []
|
||||
# - "gcc"
|
||||
# - "musl-dev"
|
||||
# - "python3-dev"
|
||||
# - "jpeg-dev"
|
||||
|
||||
# Selenium設定(レガシー互換性維持)
|
||||
selenium:
|
||||
enabled: false
|
||||
@@ -173,4 +224,13 @@ smtp:
|
||||
# 自己署名証明書を許可する場合(テスト環境のみ)
|
||||
allowSelfSigned: false
|
||||
|
||||
resources: {}
|
||||
resources: {}
|
||||
|
||||
# PHP-FPM コンテナに渡す任意の環境変数
|
||||
# DB接続情報(externalDatabase)と同様に、values.yamlで設定した値がPHPに環境変数として渡される
|
||||
# PHPからは $_ENV['KEY'] または getenv('KEY') で取得可能
|
||||
phpEnv: {}
|
||||
# API_KEY: "your-api-key"
|
||||
# STRIPE_SECRET: "sk_live_xxxxxxxxxxxxxxxx"
|
||||
# REDIS_URL: "redis://localhost:6379"
|
||||
# SOME_SERVICE_URL: "https://api.example.com"
|
||||
Reference in New Issue
Block a user