mirror of
https://github.com/N0rthernL1ghts/wordpress.git
synced 2024-11-23 14:13:27 +01:00
Add support for WordPress init - automated install
This commit is contained in:
parent
3cb2b8afdd
commit
3210cc265e
|
@ -22,12 +22,23 @@ x-wordpress-configuration-env: &wordpress-configuration-env
|
||||||
$$_SERVER['REQUEST_SCHEME'] = 'https';
|
$$_SERVER['REQUEST_SCHEME'] = 'https';
|
||||||
# $_SERVER definitions above are set to trick WP that it's accessed over HTTPS. This is typically useful only behind reverse proxy and should be avoided in production
|
# $_SERVER definitions above are set to trick WP that it's accessed over HTTPS. This is typically useful only behind reverse proxy and should be avoided in production
|
||||||
|
|
||||||
|
x-wordpress-init-env: &wordpress-init-env
|
||||||
|
WORDPRESS_INIT_ENABLE: "true"
|
||||||
|
WORDPRESS_INIT_ADMIN_USER: admin
|
||||||
|
WORDPRESS_INIT_ADMIN_PASSWORD: admin
|
||||||
|
WORDPRESS_INIT_ADMIN_EMAIL: admin@example.com
|
||||||
|
WORDPRESS_INIT_SITE_TITLE: "Example.com"
|
||||||
|
WORDPRESS_INIT_SITE_URL: "https://www.example.com"
|
||||||
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
|
|
||||||
secrets:
|
secrets:
|
||||||
database_root_password:
|
database_root_password:
|
||||||
file: ./.secrets/database_root_password.txt
|
file: ./.secrets/database_root_password.txt
|
||||||
|
wordpress_database_password:
|
||||||
|
file: ./.secrets/wordpress_database_password.txt
|
||||||
|
|
||||||
services:
|
services:
|
||||||
wordpress:
|
wordpress:
|
||||||
|
@ -44,7 +55,7 @@ services:
|
||||||
- ./.secrets/wp-salts.env
|
- ./.secrets/wp-salts.env
|
||||||
- ./.secrets/wp-database.env
|
- ./.secrets/wp-database.env
|
||||||
environment:
|
environment:
|
||||||
<<: [ *wordpress-configuration-env ]
|
<<: [ *wordpress-configuration-env, *wordpress-init-env ]
|
||||||
CRON_ENABLED: "false"
|
CRON_ENABLED: "false"
|
||||||
labels: # This configures traefik - if you have it. You also need to make sure that this service is in the same network with Traefik instance
|
labels: # This configures traefik - if you have it. You also need to make sure that this service is in the same network with Traefik instance
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
@ -108,12 +119,15 @@ services:
|
||||||
PUID: 1000
|
PUID: 1000
|
||||||
PGID: 1000
|
PGID: 1000
|
||||||
MARIADB_INIT_DATABASES: wordpress
|
MARIADB_INIT_DATABASES: wordpress
|
||||||
|
MARIADB_INIT_USERS: wordpress
|
||||||
FILE__MARIADB_ROOT_PASSWORD: /run/secrets/database_root_password
|
FILE__MARIADB_ROOT_PASSWORD: /run/secrets/database_root_password
|
||||||
|
FILE__MARIADB_USER_wordpress_PASSWORD: /run/secrets/wordpress_database_password
|
||||||
FORCE_CONFIG_OVERWRITE: 1
|
FORCE_CONFIG_OVERWRITE: 1
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/database/config:/config
|
- ./data/database/config:/config
|
||||||
- ./data/database/data:/var/lib/mysql
|
- ./data/database/data:/var/lib/mysql
|
||||||
secrets:
|
secrets:
|
||||||
- database_root_password
|
- database_root_password
|
||||||
|
- wordpress_database_password
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
|
|
56
rootfs/etc/s6-overlay/s6-rc.d/init-install-wordpress/run
Executable file
56
rootfs/etc/s6-overlay/s6-rc.d/init-install-wordpress/run
Executable file
|
@ -0,0 +1,56 @@
|
||||||
|
#!/command/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
await_database() {
|
||||||
|
# Settings
|
||||||
|
local interval="1"
|
||||||
|
local status
|
||||||
|
|
||||||
|
# For loop
|
||||||
|
for i in {1..30}
|
||||||
|
do
|
||||||
|
# Check if database is reachable
|
||||||
|
status="$(wp core is-installed 2>&1)"
|
||||||
|
|
||||||
|
# Check if status contains database connection (partial match)
|
||||||
|
if echo "${status}" | grep -q "Error establishing"; then
|
||||||
|
echo "Database is not reachable, retrying in ${interval} seconds [${i}/30]"
|
||||||
|
sleep "${interval}"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# init-install-wordpress main
|
||||||
|
main() {
|
||||||
|
# This will prepend service name to all output from here
|
||||||
|
exec > >(while read -r line; do echo "[init-install-wordpress] ${line}"; done) 2>&1
|
||||||
|
|
||||||
|
if [ "${WORDPRESS_INIT_ENABLE:-false}" = "false" ]; then
|
||||||
|
echo "WordPress init is disabled"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if WordPress is already installed
|
||||||
|
if wp core is-installed 2>&1; then
|
||||||
|
echo "WordPress is already installed"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! await_database; then
|
||||||
|
echo "Error: Database is not reachable"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
wp core install \
|
||||||
|
--url="${WORDPRESS_INIT_URL:?}" \
|
||||||
|
--title="${WORDPRESS_INIT_TITLE:-WordPress}" \
|
||||||
|
--admin_user="${WORDPRESS_INIT_ADMIN_USER:?}" \
|
||||||
|
--admin_password="${WORDPRESS_INIT_ADMIN_PASSWORD:?}" \
|
||||||
|
--admin_email="${WORDPRESS_INIT_ADMIN_EMAIL:?}" \
|
||||||
|
--skip-email
|
||||||
|
|
||||||
|
}
|
||||||
|
main
|
|
@ -0,0 +1 @@
|
||||||
|
oneshot
|
1
rootfs/etc/s6-overlay/s6-rc.d/init-install-wordpress/up
Normal file
1
rootfs/etc/s6-overlay/s6-rc.d/init-install-wordpress/up
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/etc/s6-overlay/s6-rc.d/init-install-wordpress/run
|
Loading…
Reference in New Issue
Block a user