All checks were successful
Helm Chart Release / release-chart (push) Successful in 12s
205 lines
8.2 KiB
YAML
205 lines
8.2 KiB
YAML
apiVersion: apps/v1
|
||
kind: Deployment
|
||
metadata:
|
||
name: {{ include "phpfpm.fullname" . }}
|
||
labels:
|
||
{{- include "phpfpm.labels" . | nindent 4 }}
|
||
spec:
|
||
replicas: {{ .Values.replicaCount }}
|
||
selector:
|
||
matchLabels:
|
||
{{- include "phpfpm.selectorLabels" . | nindent 6 }}
|
||
template:
|
||
metadata:
|
||
labels:
|
||
{{- include "phpfpm.selectorLabels" . | nindent 8 }}
|
||
spec:
|
||
containers:
|
||
- name: nginx
|
||
image: "{{ .Values.image.nginx.registry }}/{{ .Values.image.nginx.repository }}:{{ .Values.image.nginx.tag }}"
|
||
imagePullPolicy: {{ .Values.image.nginx.pullPolicy }}
|
||
ports:
|
||
- containerPort: 80
|
||
volumeMounts:
|
||
- name: app-storage
|
||
mountPath: /var/www/html
|
||
subPath: html
|
||
- name: nginx-config
|
||
mountPath: /etc/nginx/nginx.conf
|
||
subPath: nginx.conf
|
||
- name: php-fpm
|
||
image: "{{ .Values.image.php.registry }}/{{ .Values.image.php.repository }}:{{ .Values.image.php.tag }}"
|
||
imagePullPolicy: {{ .Values.image.php.pullPolicy }}
|
||
command:
|
||
- sh
|
||
- -c
|
||
- |
|
||
echo "Starting PHP-FPM setup process..."
|
||
|
||
{{- if or .Values.composer.enabled .Values.selenium.enabled .Values.externalDatabase.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"
|
||
{{- end }}
|
||
|
||
{{- if .Values.composer.additionalApkPackages }}
|
||
# ユーザー指定の追加APKパッケージ
|
||
{{- range .Values.composer.additionalApkPackages }}
|
||
APK_PACKAGES="$APK_PACKAGES {{ . }}"
|
||
{{- end }}
|
||
{{- end }}
|
||
|
||
if [ -n "$APK_PACKAGES" ]; then
|
||
echo "Installing APK packages: $APK_PACKAGES"
|
||
apk add --no-cache $APK_PACKAGES
|
||
fi
|
||
|
||
# ========================================
|
||
# PHP拡張のインストール
|
||
# ========================================
|
||
{{- if or .Values.composer.enabled .Values.selenium.enabled }}
|
||
echo "Installing PHP zip extension..."
|
||
docker-php-ext-install zip
|
||
{{- end }}
|
||
|
||
{{- if .Values.externalDatabase.enabled }}
|
||
echo "Installing pdo_mysql extension..."
|
||
docker-php-ext-install pdo_mysql
|
||
{{- end }}
|
||
|
||
{{- if .Values.composer.additionalPhpExtensions }}
|
||
echo "Installing additional PHP extensions..."
|
||
{{- range .Values.composer.additionalPhpExtensions }}
|
||
docker-php-ext-install {{ . }}
|
||
{{- end }}
|
||
{{- end }}
|
||
|
||
# ========================================
|
||
# Composerのインストールと実行
|
||
# ========================================
|
||
{{- 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
|
||
|
||
{{- if .Values.composer.enabled }}
|
||
# ユーザー定義のComposer設定
|
||
{{- if .Values.composer.useComposerJson }}
|
||
# composer.jsonファイルを使用
|
||
echo "Creating composer.json from values..."
|
||
cat > composer.json << 'COMPOSER_JSON_EOF'
|
||
{{ .Values.composer.composerJson }}
|
||
COMPOSER_JSON_EOF
|
||
|
||
{{- if .Values.composer.composerLock }}
|
||
echo "Creating composer.lock from values..."
|
||
cat > composer.lock << 'COMPOSER_LOCK_EOF'
|
||
{{ .Values.composer.composerLock }}
|
||
COMPOSER_LOCK_EOF
|
||
{{- end }}
|
||
|
||
echo "Running composer install..."
|
||
composer install {{ .Values.composer.installOptions }}
|
||
|
||
{{- else if .Values.composer.packages }}
|
||
# パッケージリストから直接インストール
|
||
echo "Installing Composer packages..."
|
||
{{- range .Values.composer.packages }}
|
||
composer require {{ . }}
|
||
{{- end }}
|
||
|
||
{{- if .Values.composer.installOptions }}
|
||
# オプティマイズ実行
|
||
composer install {{ .Values.composer.installOptions }}
|
||
{{- end }}
|
||
|
||
{{- else }}
|
||
# composer.jsonが既に存在する場合はそれを使用
|
||
if [ -f composer.json ]; then
|
||
echo "Found existing composer.json, running composer install..."
|
||
composer install {{ .Values.composer.installOptions }}
|
||
else
|
||
echo "No composer configuration found, skipping package installation"
|
||
fi
|
||
{{- end }}
|
||
{{- end }}
|
||
|
||
{{- if .Values.selenium.enabled }}
|
||
# Selenium用のパッケージインストール(レガシー互換性)
|
||
echo "Installing Selenium WebDriver package..."
|
||
composer require php-webdriver/webdriver
|
||
{{- end }}
|
||
{{- end }}
|
||
{{- end }}
|
||
|
||
echo "Setup complete, starting PHP-FPM..."
|
||
php-fpm
|
||
ports:
|
||
- containerPort: 9000 # PHP-FPMは9000ポートでリッスン
|
||
volumeMounts:
|
||
- name: app-storage
|
||
mountPath: /var/www/html
|
||
subPath: html
|
||
{{- if and .Values.composer.enabled .Values.composer.useComposerJson }}
|
||
- name: composer-config
|
||
mountPath: /tmp/composer-init
|
||
{{- end }}
|
||
env:
|
||
{{- if .Values.externalDatabase.enabled }}
|
||
- name: DB_HOST
|
||
value: {{ .Values.externalDatabase.host | quote }}
|
||
- name: DB_PORT
|
||
value: {{ .Values.externalDatabase.port | quote }}
|
||
- name: DB_NAME
|
||
value: {{ .Values.externalDatabase.database | quote }}
|
||
- name: DB_USER
|
||
value: {{ .Values.externalDatabase.username | quote }}
|
||
- name: DB_PASS
|
||
valueFrom:
|
||
secretKeyRef:
|
||
name: {{ include "phpfpm.fullname" . }}-db-secret
|
||
key: {{ include "phpfpm.fullname" . }}-db-key
|
||
{{- end }}
|
||
{{- if .Values.selenium.enabled }}
|
||
- name: selenium
|
||
image: "{{ .Values.image.selenium.registry }}/{{ .Values.image.selenium.repository }}:{{ .Values.image.selenium.tag }}"
|
||
imagePullPolicy: {{ .Values.image.selenium.pullPolicy }}
|
||
ports:
|
||
- containerPort: 4444 # Selenium用ポート
|
||
volumeMounts:
|
||
- name: app-storage
|
||
mountPath: /var/www/html
|
||
subPath: html
|
||
{{- end }}
|
||
dnsPolicy: ClusterFirst
|
||
dnsConfig:
|
||
options:
|
||
- name: ndots
|
||
value: "1"
|
||
volumes:
|
||
- name: app-storage
|
||
{{- if .Values.persistence.enabled }}
|
||
persistentVolumeClaim:
|
||
claimName: {{ include "phpfpm.fullname" . }}-pvc
|
||
{{- else }}
|
||
emptyDir: {}
|
||
{{- end }}
|
||
- name: nginx-config
|
||
configMap:
|
||
name: {{ include "phpfpm.fullname" . }}-nginx-config
|
||
{{- if and .Values.composer.enabled .Values.composer.useComposerJson }}
|
||
- name: composer-config
|
||
configMap:
|
||
name: {{ include "phpfpm.fullname" . }}-composer-config
|
||
{{- end }} |