feat: Composerデフォルト導入先を /composer に変更 (v8.5.6-c)
Helm Chart Release / release-chart (push) Successful in 5s

/var/www はWebルート /var/www/html の親ディレクトリのため、
ネストマウントの副産物としてPVCの composer サブパス内に
空の html/ ディレクトリが生成されていた。

デフォルトの composer.workingDir をWebルートと親子関係にない
/composer に変更してネストマウント自体を解消。

- autoload読み込み: require_once '/composer/vendor/autoload.php';
  (values.yaml のコメントにも明記)
- PVCデータは同じ composer サブパスを使うため移行不要
- 旧Webルートからの自動移行機能(v8.5.6-b)は維持

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 15:13:51 +09:00
co-authored by Claude Fable 5
parent e294f909c1
commit 76a4a7874b
6 changed files with 60 additions and 12 deletions
+36
View File
@@ -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)
+6
View File
@@ -22,6 +22,12 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube
## チャート改修履歴
### 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と同じ仕組み)。
+1 -1
View File
@@ -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.6-b
version: 8.5.6-c
appVersion: "8.5.6"
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
+5 -4
View File
@@ -122,7 +122,7 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
| パラメータ | 説明 | デフォルト |
|-----------|------|-----------|
| `composer.enabled` | Composer有効化 | `false` |
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php` | `"/var/www"` |
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php` | `"/composer"` |
| `composer.packages` | インストールパッケージ | `[]` |
| `composer.useComposerJson` | composer.json使用 | `false` |
| `composer.composerJson` | composer.json内容 | `""` |
@@ -239,12 +239,13 @@ persistence:
```
> **📌 Composerの導入先について**
> Composerパッケージはデフォルトで**Webルート外**の `/var/www` に導入されます(`composer.workingDir` で変更可能)。
> Composerパッケージはデフォルトで**Webルート外**の `/composer` に導入されます(`composer.workingDir` で変更可能)。
> `vendor/` や `composer.json` がWeb経由で公開されないため、情報漏洩などのセキュリティリスクを回避できます。
> また、Webルート(`/var/www/html`)と親子関係にないパスのため、ネストマウントによる空フォルダも生成されません。
>
> PHPコードからは以下のように読み込みます:
> ```php
> require_once '/var/www/vendor/autoload.php';
> require_once '/composer/vendor/autoload.php';
> ```
>
> 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。
@@ -344,7 +345,7 @@ resources:
**PHPコード例**:
```php
<?php
require_once '/var/www/vendor/autoload.php';
require_once '/composer/vendor/autoload.php';
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
+5 -4
View File
@@ -110,9 +110,10 @@ spec:
echo "Installing Composer..."
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Composer導入先(デフォルトはWebルート外の /var/www
mkdir -p {{ .Values.composer.workingDir | default "/var/www" }}
cd {{ .Values.composer.workingDir | default "/var/www" }}
# 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設定
@@ -202,7 +203,7 @@ spec:
- name: app-storage
mountPath: /var/www/html
subPath: html
{{- $composerDir := .Values.composer.workingDir | default "/var/www" }}
{{- $composerDir := .Values.composer.workingDir | default "/composer" }}
{{- if and (or .Values.composer.enabled .Values.selenium.enabled) (ne $composerDir "/var/www/html") }}
# Composer導入先をPVCに永続化(Pod再起動時のvendor再構築を回避)
- name: app-storage
+7 -3
View File
@@ -86,11 +86,15 @@ composer:
enabled: false
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
# デフォルトはWebルート(/var/www/html)の外の /var/www に導入し、
# デフォルトはWebルート(/var/www/html)の外の /composer に導入し、
# vendor/ や composer.json がWeb経由で公開されるのを防ぐ
# PHPコードからは require_once '/var/www/vendor/autoload.php'; で読み込む
# ※ Webルートと親子関係にないパスを推奨(ネストマウントによる空フォルダ生成を回避)
#
# 【重要】PHPコードからの autoload.php の読み込み方:
# require_once '/composer/vendor/autoload.php';
#
# 旧来の動作(Webルート直下に導入)へ戻す場合は "/var/www/html" を指定
workingDir: "/var/www"
workingDir: "/composer"
# Composerでインストールするパッケージ
# packages配列が空の場合、composer.jsonを使用