feat: Composerデフォルト導入先を /composer に変更 (v8.5.6-c)
Helm Chart Release / release-chart (push) Successful in 5s
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:
@@ -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)
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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を使用
|
||||
|
||||
Reference in New Issue
Block a user