Spaces:
Paused
Paused
| set -Eeuo pipefail | |
| : "${MARIADB_ROOT_PASSWORD:?MARIADB_ROOT_PASSWORD is required}" | |
| : "${WORDPRESS_DB_NAME:?WORDPRESS_DB_NAME is required}" | |
| : "${WORDPRESS_DB_USER:?WORDPRESS_DB_USER is required}" | |
| : "${WORDPRESS_DB_PASSWORD:?WORDPRESS_DB_PASSWORD is required}" | |
| mkdir -p /run/mysqld /var/lib/mysql | |
| chown -R mysql:mysql /run/mysqld /var/lib/mysql | |
| if [ ! -d /var/lib/mysql/mysql ]; then | |
| mariadb-install-db --user=mysql --datadir=/var/lib/mysql >/dev/null | |
| fi | |
| mariadbd --user=mysql --bind-address=127.0.0.1 --skip-name-resolve & | |
| DB_PID=$! | |
| cleanup() { kill "$DB_PID" 2>/dev/null || true; } | |
| trap cleanup EXIT | |
| for _ in $(seq 1 60); do | |
| mariadb-admin ping --silent >/dev/null 2>&1 && break | |
| sleep 1 | |
| done | |
| mariadb-admin ping --silent >/dev/null 2>&1 || { echo 'MariaDB failed to start' >&2; exit 1; } | |
| mariadb -uroot <<SQL | |
| CREATE DATABASE IF NOT EXISTS \`${WORDPRESS_DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | |
| CREATE USER IF NOT EXISTS '${WORDPRESS_DB_USER}'@'127.0.0.1' IDENTIFIED BY '${WORDPRESS_DB_PASSWORD}'; | |
| ALTER USER '${WORDPRESS_DB_USER}'@'127.0.0.1' IDENTIFIED BY '${WORDPRESS_DB_PASSWORD}'; | |
| GRANT ALL PRIVILEGES ON \`${WORDPRESS_DB_NAME}\`.* TO '${WORDPRESS_DB_USER}'@'127.0.0.1'; | |
| FLUSH PRIVILEGES; | |
| SQL | |
| cat > /var/www/html/wp-config-extra.php <<'PHP' | |
| <?php | |
| if (getenv('WP_ENVIRONMENT_TYPE')) { | |
| define('WP_ENVIRONMENT_TYPE', getenv('WP_ENVIRONMENT_TYPE')); | |
| } | |
| define('WP_DEBUG', filter_var(getenv('WORDPRESS_DEBUG') ?: '0', FILTER_VALIDATE_BOOLEAN)); | |
| define('WP_DEBUG_LOG', true); | |
| define('WP_DEBUG_DISPLAY', false); | |
| PHP | |
| # The official image generates wp-config.php from the standard environment variables. | |
| export WORDPRESS_DB_HOST=127.0.0.1 | |
| export WORDPRESS_DB_NAME="$WORDPRESS_DB_NAME" | |
| export WORDPRESS_DB_USER="$WORDPRESS_DB_USER" | |
| export WORDPRESS_DB_PASSWORD="$WORDPRESS_DB_PASSWORD" | |
| apache2-foreground & | |
| APACHE_PID=$! | |
| for _ in $(seq 1 90); do | |
| if wp core is-installed --path=/var/www/html --allow-root >/dev/null 2>&1; then break; fi | |
| if [ ! -f /var/www/html/wp-config.php ]; then | |
| wp core download --path=/var/www/html --force --allow-root >/dev/null 2>&1 || true | |
| wp config create --path=/var/www/html --dbname="$WORDPRESS_DB_NAME" --dbuser="$WORDPRESS_DB_USER" --dbpass="$WORDPRESS_DB_PASSWORD" --dbhost=127.0.0.1 --skip-check --force --allow-root >/dev/null 2>&1 || true | |
| fi | |
| wp core install --path=/var/www/html --url="${SPACE_HOST:-http://localhost:7860}" --title='Bema Learn API' --admin_user="${WP_ADMIN_USER:-admin}" --admin_password="${WP_ADMIN_PASSWORD:-change-me-admin}" --admin_email="${WP_ADMIN_EMAIL:-admin@example.test}" --skip-email --allow-root >/dev/null 2>&1 || true | |
| sleep 2 | |
| done | |
| wp core is-installed --path=/var/www/html --allow-root >/dev/null 2>&1 || { echo 'WordPress failed to initialize' >&2; exit 1; } | |
| wp plugin activate bemalearn --path=/var/www/html --allow-root >/dev/null | |
| wp rewrite structure '/%postname%/' --path=/var/www/html --allow-root >/dev/null 2>&1 || true | |
| wp rewrite flush --hard --path=/var/www/html --allow-root >/dev/null 2>&1 || true | |
| wait "$APACHE_PID" | |