#!/bin/sh set -eu cd /var/www/html if [ ! -f .env ] && [ -f .env.example ]; then cp .env.example .env fi if [ ! -f vendor/autoload.php ]; then composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader fi if [ "${DB_CONNECTION:-mysql}" = "sqlite" ]; then mkdir -p database touch database/database.sqlite chown www-data:www-data database/database.sqlite chmod 664 database/database.sqlite if ! php -r ' $pdo = new PDO("sqlite:database/database.sqlite"); $statement = $pdo->query("SELECT name FROM sqlite_master WHERE type='\''table'\'' AND name='\''migrations'\''"); exit($statement->fetch() ? 0 : 1); '; then php command.php migrate fi fi if [ "${DB_CONNECTION:-mysql}" = "mysql" ]; then php -r ' $host = getenv("DB_HOST") ?: "db"; $port = getenv("DB_PORT") ?: "3306"; $database = getenv("DB_DATABASE") ?: "pro-php-mvc"; $username = getenv("DB_USERNAME") ?: "root"; $password = getenv("DB_PASSWORD") ?: ""; for ($attempt = 0; $attempt < 30; $attempt++) { try { new PDO("mysql:host={$host};port={$port};dbname={$database}", $username, $password); exit(0); } catch (Throwable $exception) { fwrite(STDERR, "Waiting for MySQL...\n"); sleep(2); } } fwrite(STDERR, "MySQL did not become ready in time.\n"); exit(1); '; if ! php -r ' $host = getenv("DB_HOST") ?: "db"; $port = getenv("DB_PORT") ?: "3306"; $database = getenv("DB_DATABASE") ?: "pro-php-mvc"; $username = getenv("DB_USERNAME") ?: "root"; $password = getenv("DB_PASSWORD") ?: ""; $pdo = new PDO("mysql:host={$host};port={$port};dbname={$database}", $username, $password); $statement = $pdo->query("SHOW TABLES LIKE '\''migrations'\''"); exit($statement->fetch() ? 0 : 1); '; then php command.php migrate fi fi php-fpm -D exec nginx -g "daemon off;"