forked from coop-cloud/wordpress
132 lines
4.4 KiB
Cheetah
132 lines
4.4 KiB
Cheetah
#!/bin/bash
|
|
|
|
{{ if (getenv "PHP_EXTENSIONS") }}
|
|
docker-php-ext-install {{ getenv "PHP_EXTENSIONS" }}
|
|
{{ end }}
|
|
|
|
curl -z /usr/local/bin/wp -o /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
|
|
chmod +x /usr/local/bin/wp
|
|
|
|
{{ if eq (getenv "ENABLE_COMPOSER") "1" }}
|
|
mkdir -p /var/www/.composer
|
|
chown www-data:www-data /var/www/.composer /var/www/html/composer
|
|
|
|
curl https://getcomposer.org/installer -o /tmp/composer-setup.php
|
|
php -r "if (hash_file('sha384', '/tmp/composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
|
php /tmp/composer-setup.php
|
|
rm /tmp/composer-setup.php
|
|
|
|
mv /var/www/html/composer.phar /usr/local/bin/composer
|
|
{{ end }}
|
|
|
|
{{ if eq (getenv "CORS_ALLOW_ALL") "1" }}
|
|
a2enmod headers
|
|
sed -ri -e 's/^([ \t]*)(<\/VirtualHost>)/\1\tHeader set Access-Control-Allow-Origin "*"\n\1\2/g' /etc/apache2/sites-available/*.conf
|
|
{{ end }}
|
|
|
|
{{ if eq (getenv "DISABLE_WEB_INSTALLER") "1" }}
|
|
cat > /etc/apache2/conf-enabled/disable-installer.conf <<'EOF'
|
|
<LocationMatch "^/wp-admin/install\.php">
|
|
Require all denied
|
|
</LocationMatch>
|
|
EOF
|
|
{{ end }}
|
|
|
|
{{ if eq (getenv "MULTISITE") "enable" }}
|
|
export WORDPRESS_CONFIG_EXTRA="$WORDPRESS_CONFIG_EXTRA
|
|
define('WP_CACHE', false);
|
|
define('WP_ALLOW_MULTISITE', true );"
|
|
{{ end }}
|
|
|
|
{{ if or (eq (getenv "MULTISITE") "subdomain") (eq (getenv "MULTISITE") "subfolder") }}
|
|
export WORDPRESS_CONFIG_EXTRA="$WORDPRESS_CONFIG_EXTRA
|
|
define('MULTISITE', true);
|
|
define('SUBDOMAIN_INSTALL', true);
|
|
define('DOMAIN_CURRENT_SITE', '${DOMAIN}');
|
|
define('PATH_CURRENT_SITE', '/');
|
|
define('SITE_ID_CURRENT_SITE', 1);
|
|
define('BLOG_ID_CURRENT_SITE', 1);
|
|
define('FORCE_SSL_ADMIN', true );
|
|
define('COOKIE_DOMAIN', \$_SERVER['HTTP_HOST']);"
|
|
{{ end }}
|
|
|
|
|
|
UPLOADS_HTACCESS=/var/www/html/wp-content/uploads/.htaccess
|
|
if [ ! -f "$UPLOADS_HTACCESS" ]; then
|
|
mkdir -p /var/www/html/wp-content/uploads
|
|
cat > "$UPLOADS_HTACCESS" <<'EOF'
|
|
# Prevent PHP execution in uploads directory
|
|
<FilesMatch "\.(?i:php|phtml|phar)$">
|
|
Require all denied
|
|
</FilesMatch>
|
|
EOF
|
|
fi
|
|
|
|
chown -R --from=root:root www-data:www-data /var/www/html/wp-content/
|
|
|
|
{{ if eq (getenv "AUTO_INSTALL") "1" }}
|
|
(
|
|
DOMAIN="{{ getenv "DOMAIN" }}"
|
|
TITLE="{{ getenv "TITLE" }}"
|
|
ADMIN_EMAIL="{{ getenv "ADMIN_EMAIL" }}"
|
|
LOCALE="{{ getenv "LOCALE" }}"
|
|
DEFAULT_USER_ROLE="{{ getenv "DEFAULT_USER_ROLE" }}"
|
|
AUTO_UPDATES="{{ getenv "AUTO_UPDATES" }}"
|
|
|
|
# Wait for wp-config.php (created by upstream entrypoint)
|
|
for _ in $(seq 1 30); do
|
|
if [ -f /var/www/html/wp-config.php ]; then
|
|
break
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# Wait for DB to be reachable
|
|
for _ in $(seq 1 60); do
|
|
if su -p www-data -s /bin/bash -c "/usr/local/bin/wp db check" 2>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# Skip if already installed or required vars missing
|
|
if su -p www-data -s /bin/bash -c "/usr/local/bin/wp core is-installed" 2>/dev/null; then
|
|
exit 0
|
|
fi
|
|
if [ -z "$TITLE" ] || [ -z "$ADMIN_EMAIL" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
ADMIN="admin"
|
|
ADMIN_PASSWORD=$(cat /run/secrets/admin_password 2>/dev/null | xargs || true)
|
|
ADMIN_PASS_ARG=""
|
|
if [ -n "$ADMIN_PASSWORD" ]; then
|
|
ADMIN_PASS_ARG="--admin_password=$ADMIN_PASSWORD"
|
|
fi
|
|
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp core install --url=$DOMAIN --title=\"$TITLE\" --admin_user=$ADMIN --admin_email=$ADMIN_EMAIL --locale=$LOCALE --skip-email $ADMIN_PASS_ARG"
|
|
if [ -n "$LOCALE" ]; then
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp language core install $LOCALE"
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp site switch-language $LOCALE"
|
|
fi
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp rewrite structure '/%year%/%monthnum%/%day%/%postname%/'"
|
|
if [ -n "$DEFAULT_USER_ROLE" ]; then
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp option set default_role $DEFAULT_USER_ROLE"
|
|
else
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp option set default_role subscriber"
|
|
fi
|
|
if [ "$AUTO_UPDATES" != "0" ]; then
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp theme auto-updates enable --all"
|
|
su -p www-data -s /bin/bash -c "/usr/local/bin/wp plugin auto-updates enable --all" || true
|
|
fi
|
|
) &
|
|
{{ end }}
|
|
|
|
if [ $# -gt 0 ]; then
|
|
"$@"
|
|
fi
|
|
|
|
# Upstream ENTRYPOINT
|
|
# https://github.com/docker-library/wordpress/blob/master/php7.4/apache/Dockerfile#L120
|
|
/usr/local/bin/docker-entrypoint.sh apache2-foreground
|