From d38b84a4dece21f74c40c98d77598ccd182da7b3 Mon Sep 17 00:00:00 2001 From: pieter Date: Fri, 21 Nov 2025 01:46:34 +0000 Subject: [PATCH] =?UTF-8?q?templates/deployment.yaml=20=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/deployment.yaml | 188 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 182 insertions(+), 6 deletions(-) diff --git a/templates/deployment.yaml b/templates/deployment.yaml index 0823683..cf65215 100644 --- a/templates/deployment.yaml +++ b/templates/deployment.yaml @@ -21,19 +21,195 @@ spec: - name: wordpress-init image: "{{ .Values.image.wordpress.registry }}/{{ .Values.image.wordpress.repository }}:{{ .Values.image.wordpress.tag }}" imagePullPolicy: {{ .Values.image.wordpress.pullPolicy }} - command: ["/bin/sh", "-c"] + command: ["/bin/sh"] args: + - -c - | - if [ ! -f /var/www/html/wp-config.php ]; then - echo "Initializing WordPress files..." + #!/bin/sh + set -e + + echo "=== WordPress Initialization Started ===" + + # WordPress ファイルのコピー + if [ ! -f /var/www/html/index.php ]; then + echo "Copying WordPress files..." cp -rp /usr/src/wordpress/* /var/www/html/ 2>/dev/null || true - echo "WordPress files copied successfully" - else - echo "WordPress already initialized" + echo "WordPress files copied" fi + + # wp-config.php の生成 + if [ ! -f /var/www/html/wp-config.php ]; then + echo "Generating wp-config.php..." + cat > /var/www/html/wp-config.php <<'WPCONFIG' + /dev/null || true + chmod +x /tmp/wp-cli.phar + + # データベース接続待機 + echo "Waiting for database connection..." + max_attempts=30 + attempt=0 + while [ $attempt -lt $max_attempts ]; do + if /tmp/wp-cli.phar --path=/var/www/html db check 2>/dev/null; then + echo "Database connection successful" + break + fi + attempt=$((attempt + 1)) + echo "Waiting for database... ($attempt/$max_attempts)" + sleep 2 + done + + # データベーステーブルの確認 + echo "Checking if WordPress is already installed..." + TABLES=$(/tmp/wp-cli.phar --path=/var/www/html db query "SHOW TABLES LIKE '${WORDPRESS_TABLE_PREFIX}options';" 2>/dev/null || echo "") + + if [ -z "$TABLES" ]; then + echo "=== Starting WordPress Installation ===" + + # 管理者パスワードの生成または使用 + if [ -z "$WP_ADMIN_PASSWORD" ]; then + WP_ADMIN_PASSWORD=$(tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 16) + echo "Generated admin password: $WP_ADMIN_PASSWORD" + echo "$WP_ADMIN_PASSWORD" > /var/www/html/.admin-password + fi + + # WordPressのインストール + echo "Installing WordPress..." + /tmp/wp-cli.phar --path=/var/www/html core install \ + --url="$WP_SITE_URL" \ + --title="$WP_SITE_TITLE" \ + --admin_user="$WP_ADMIN_USER" \ + --admin_password="$WP_ADMIN_PASSWORD" \ + --admin_email="$WP_ADMIN_EMAIL" \ + --skip-email + + echo "=== WordPress Installation Completed ===" + echo "Admin User: $WP_ADMIN_USER" + if [ -f /var/www/html/.admin-password ]; then + echo "Admin Password: $(cat /var/www/html/.admin-password)" + fi + else + echo "WordPress is already installed, skipping installation" + + # コアアップデートの確認 + if /tmp/wp-cli.phar --path=/var/www/html core version 2>/dev/null; then + echo "Checking for WordPress updates..." + /tmp/wp-cli.phar --path=/var/www/html core update --version=$(cat /usr/src/wordpress/wp-includes/version.php | grep wp_version | cut -d "'" -f 2) 2>/dev/null || true + /tmp/wp-cli.phar --path=/var/www/html core update-db 2>/dev/null || true + fi + fi + + # ads.txt の配置 + {{- if .Values.wordpress.adsTxt.enabled }} + echo "Deploying ads.txt..." + cat > /var/www/html/ads.txt <<'ADSTXT' + {{ .Values.wordpress.adsTxt.content }} + ADSTXT + echo "ads.txt deployed" + {{- end }} + + echo "=== WordPress Initialization Completed ===" volumeMounts: - name: wordpress-data mountPath: /var/www/html + env: + - name: WORDPRESS_DB_HOST + value: {{ .Values.wordpress.dbHost | quote }} + - name: WORDPRESS_DB_NAME + value: {{ .Values.wordpress.dbName | quote }} + - name: WORDPRESS_DB_USER + value: {{ .Values.wordpress.dbUser | quote }} + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: db-password + - name: WORDPRESS_TABLE_PREFIX + value: {{ .Values.wordpress.tablePrefix | quote }} + - name: WP_SITE_URL + value: {{ .Values.wordpress.siteUrl | quote }} + - name: WP_SITE_TITLE + value: {{ .Values.wordpress.siteTitle | quote }} + - name: WP_ADMIN_USER + value: {{ .Values.wordpress.adminUser | quote }} + - name: WP_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: admin-password + - name: WP_ADMIN_EMAIL + value: {{ .Values.wordpress.adminEmail | quote }} + - name: WP_AUTH_KEY + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: auth-key + - name: WP_SECURE_AUTH_KEY + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: secure-auth-key + - name: WP_LOGGED_IN_KEY + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: logged-in-key + - name: WP_NONCE_KEY + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: nonce-key + - name: WP_AUTH_SALT + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: auth-salt + - name: WP_SECURE_AUTH_SALT + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: secure-auth-salt + - name: WP_LOGGED_IN_SALT + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: logged-in-salt + - name: WP_NONCE_SALT + valueFrom: + secretKeyRef: + name: {{ include "wordpress-nginx.fullname" . }}-secret + key: nonce-salt securityContext: runAsUser: 82 runAsGroup: 82