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)
|
### 旧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と同じ仕組み)。
|
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
|
name: phpfpm
|
||||||
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
||||||
type: application
|
type: application
|
||||||
version: 8.5.6-b
|
version: 8.5.6-c
|
||||||
appVersion: "8.5.6"
|
appVersion: "8.5.6"
|
||||||
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
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.enabled` | Composer有効化 | `false` |
|
||||||
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php`) | `"/var/www"` |
|
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php`) | `"/composer"` |
|
||||||
| `composer.packages` | インストールパッケージ | `[]` |
|
| `composer.packages` | インストールパッケージ | `[]` |
|
||||||
| `composer.useComposerJson` | composer.json使用 | `false` |
|
| `composer.useComposerJson` | composer.json使用 | `false` |
|
||||||
| `composer.composerJson` | composer.json内容 | `""` |
|
| `composer.composerJson` | composer.json内容 | `""` |
|
||||||
@@ -239,12 +239,13 @@ persistence:
|
|||||||
```
|
```
|
||||||
|
|
||||||
> **📌 Composerの導入先について**
|
> **📌 Composerの導入先について**
|
||||||
> Composerパッケージはデフォルトで**Webルート外**の `/var/www` に導入されます(`composer.workingDir` で変更可能)。
|
> Composerパッケージはデフォルトで**Webルート外**の `/composer` に導入されます(`composer.workingDir` で変更可能)。
|
||||||
> `vendor/` や `composer.json` がWeb経由で公開されないため、情報漏洩などのセキュリティリスクを回避できます。
|
> `vendor/` や `composer.json` がWeb経由で公開されないため、情報漏洩などのセキュリティリスクを回避できます。
|
||||||
|
> また、Webルート(`/var/www/html`)と親子関係にないパスのため、ネストマウントによる空フォルダも生成されません。
|
||||||
>
|
>
|
||||||
> PHPコードからは以下のように読み込みます:
|
> PHPコードからは以下のように読み込みます:
|
||||||
> ```php
|
> ```php
|
||||||
> require_once '/var/www/vendor/autoload.php';
|
> require_once '/composer/vendor/autoload.php';
|
||||||
> ```
|
> ```
|
||||||
>
|
>
|
||||||
> 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。
|
> 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。
|
||||||
@@ -344,7 +345,7 @@ resources:
|
|||||||
**PHPコード例**:
|
**PHPコード例**:
|
||||||
```php
|
```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\RemoteWebDriver;
|
||||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||||
|
|||||||
@@ -110,9 +110,10 @@ spec:
|
|||||||
echo "Installing Composer..."
|
echo "Installing Composer..."
|
||||||
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||||
|
|
||||||
# Composer導入先(デフォルトはWebルート外の /var/www)
|
# Composer導入先(デフォルトはWebルート外の /composer)
|
||||||
mkdir -p {{ .Values.composer.workingDir | default "/var/www" }}
|
# PHPからは require_once '{{ .Values.composer.workingDir | default "/composer" }}/vendor/autoload.php'; で読み込む
|
||||||
cd {{ .Values.composer.workingDir | default "/var/www" }}
|
mkdir -p {{ .Values.composer.workingDir | default "/composer" }}
|
||||||
|
cd {{ .Values.composer.workingDir | default "/composer" }}
|
||||||
|
|
||||||
{{- if .Values.composer.enabled }}
|
{{- if .Values.composer.enabled }}
|
||||||
# ユーザー定義のComposer設定
|
# ユーザー定義のComposer設定
|
||||||
@@ -202,7 +203,7 @@ spec:
|
|||||||
- name: app-storage
|
- name: app-storage
|
||||||
mountPath: /var/www/html
|
mountPath: /var/www/html
|
||||||
subPath: 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") }}
|
{{- if and (or .Values.composer.enabled .Values.selenium.enabled) (ne $composerDir "/var/www/html") }}
|
||||||
# Composer導入先をPVCに永続化(Pod再起動時のvendor再構築を回避)
|
# Composer導入先をPVCに永続化(Pod再起動時のvendor再構築を回避)
|
||||||
- name: app-storage
|
- name: app-storage
|
||||||
|
|||||||
+7
-3
@@ -86,11 +86,15 @@ composer:
|
|||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
|
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
|
||||||
# デフォルトはWebルート(/var/www/html)の外の /var/www に導入し、
|
# デフォルトはWebルート(/var/www/html)の外の /composer に導入し、
|
||||||
# vendor/ や composer.json がWeb経由で公開されるのを防ぐ
|
# 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" を指定
|
# 旧来の動作(Webルート直下に導入)へ戻す場合は "/var/www/html" を指定
|
||||||
workingDir: "/var/www"
|
workingDir: "/composer"
|
||||||
|
|
||||||
# Composerでインストールするパッケージ
|
# Composerでインストールするパッケージ
|
||||||
# packages配列が空の場合、composer.jsonを使用
|
# packages配列が空の場合、composer.jsonを使用
|
||||||
|
|||||||
Reference in New Issue
Block a user