Compare commits

..

12 Commits

Author SHA1 Message Date
p4u1 015c7d6f0c feat: MULTISITE env variable to manage subdomain and subpath multisites
continuous-integration/drone/pr Build is failing Details
2023-12-15 16:08:53 +01:00
Moritz 81dbeca30d fix COMPOSE_FILE env for remote SMTP relay, it requires the mailrelay
continuous-integration/drone/push Build is passing Details
2023-12-05 15:29:45 +01:00
3wordchant 245b800439 Merge pull request 'wordpress 6.4.1' (#37) from p4u1/wordpress:6-4-1 into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #37
2023-12-02 15:31:20 +00:00
p4u1 540d526914 wordpress 6.4.1 and mariadb 11.2
continuous-integration/drone/pr Build is failing Details
2023-11-27 15:13:58 +01:00
Moritz df32ba5141 chore: publish 2.6.1+6.4.0 release
continuous-integration/drone/push Build is passing Details
2023-11-15 16:22:57 +01:00
Moritz 8d8418a6c0 fix disabling update notification settings
continuous-integration/drone/push Build is passing Details
2023-11-15 16:21:44 +01:00
3wordchant a8d67b063c Merge pull request 'fix db backup and restore' (#33) from p4u1/wordpress:dix-db-backup-restore into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #33
2023-11-10 14:02:45 +00:00
3wc da0f503960 chore: publish 2.6.0+6.4.0 release
continuous-integration/drone/push Build is passing Details
2023-11-09 17:42:13 +00:00
3wc 6767d5ee65 Improve composer support
continuous-integration/drone/push Build is failing Details
2023-11-09 17:41:26 +00:00
3wordchant d5227cc534 Merge pull request 'update wordpress to 6.4.0' (#36) from p4u1/wordpress:wordpress-6-4 into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #36
2023-11-09 17:41:02 +00:00
p4u1 45a36ba7b4 update wordpress to 6.4.0
continuous-integration/drone/pr Build encountered an error Details
2023-11-08 20:11:58 +01:00
p4u1 ed77855e7d fix db backup and restore
continuous-integration/drone/pr Build encountered an error Details
2023-11-06 21:13:53 +01:00
5 changed files with 26 additions and 85 deletions

View File

@ -20,8 +20,8 @@ LETS_ENCRYPT_ENV=production
# Every new user is per default subscriber, uncomment to change it
#DEFAULT_USER_ROLE=administrator
# Uncomment to install PHP Composer
#COMPOSER=1
# PHP composer for plugin installation
#COMPOSE_FILE="$COMPOSE_FILE:compose.composer.yml"
#WORDPRESS_DEBUG=true
@ -43,7 +43,7 @@ SECRET_DB_PASSWORD_VERSION=v1
#MAIL_FROM="wordpress@example.com"
# Remote SMTP relay
#COMPOSE_FILE="$COMPOSE_FILE:compose.smtp.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.mailrelay.yml:compose.smtp.yml"
#SMTP_HOST="mail.example.com"
#MAIL_FROM="wordpress@example.com"
#SMTP_USER="wordpress@example.com" # optional, defaults to MAIL_FROM

76
abra.sh
View File

@ -20,7 +20,7 @@ core_install(){
wp "site switch-language $LOCALE"
wp "rewrite structure '/%year%/%monthnum%/%day%/%postname%/'"
wp "plugin install --activate disable-update-notifications"
wp 'option update dwcun_setting on'
wp "option update disable_notification_setting --format=json '{\"dpun_setting\":false,\"dwtu_setting\":false,\"dwcun_setting\":true}'"
if [ -n "$DEFAULT_USER_ROLE" ]
then
wp "option set default_role $DEFAULT_USER_ROLE"
@ -76,77 +76,3 @@ set_authentik(){
fix_mysql() {
echo "ALTER TABLE mysql.column_stats MODIFY histogram longblob; ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');" | mysql -u root -p$(cat /run/secrets/db_root_password)
}
sub_wp() {
CONTAINER=$(docker container ls -f "Name=${STACK_NAME}_app" --format '{{ .ID }}')
if [ -z "$CONTAINER" ]; then
error "Can't find a container for ${STACK_NAME}_app"
exit
fi
debug "Using Container ID ${CONTAINER}"
# FIXME 3wc: we're fighting the Wordpress image, which recommends a named
# volume for /var/www/html -- this used to work fine using --volumes-from
# because the actual MySQL password was inserted into the generated
# wp-config.php -- but as of Wordpress 5.7.0, wp-config loads data straight
# from the environment, which requires Docker secrets to work, which only work
# in swarm services (not one-off `docker run` commands). Defining a `cli`
# service in compose.yml almost works, but there's no volumes_from: in Compose
# V3, and without it then the `cli` service can't access Wordpress core.
# See https://git.autonomic.zone/coop-cloud/wordpress/issues/21
warning "Slowly looking up MySQL password..."
silence
abra__service_="app"
DB_PASSWORD="$(sub_app_run cat "/run/secrets/db_password")"
unsilence
# shellcheck disable=SC2154,SC2086
docker run -it \
--volumes-from "$CONTAINER" \
--network "container:$CONTAINER" \
-u xfs:xfs \
-e WORDPRESS_DB_HOST=db \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD="${DB_PASSWORD}" \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_CONFIG_EXTRA="${WORDPRESS_CONFIG_EXTRA}" \
wordpress:cli wp ${abra__args_[*]}
}
abra_backup_app() {
_abra_backup_dir "app:/var/www/html/wp-content"
}
abra_backup_db() {
_abra_backup_mysql "db" "wordpress"
}
abra_backup() {
abra_backup_app && abra_backup_db
}
abra_restore_app() {
# shellcheck disable=SC2034
{
abra__src_="-"
abra__dst_="app:/var/www/html/"
}
zcat "$@" | sub_app_cp
success "Restored 'app'"
}
abra_restore_db() {
# 3wc: unlike abra_backup_db, we can assume abra__service_ will be 'db' if we
# got this far..
# shellcheck disable=SC2034
abra___no_tty="true"
DB_ROOT_PASSWORD=$(sub_app_run cat /run/secrets/db_root_password)
zcat "$@" | sub_app_run mysql -u root -p"$DB_ROOT_PASSWORD" wordpress
success "Restored 'db'"
}

14
compose.composer.yml Normal file
View File

@ -0,0 +1,14 @@
---
version: "3.8"
services:
app:
volumes:
- "composer:/var/www/html/composer"
environment:
- ENABLE_COMPOSER=1
- COMPOSER=composer/composer.json
- COMPOSER_VENDOR_DIR=composer/vendor
volumes:
composer:

View File

@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: "wordpress:6.3.0"
image: "wordpress:6.4.1"
volumes:
- "wordpress_content:/var/www/html/wp-content/"
networks:
@ -60,10 +60,10 @@ services:
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "backupbot.backup=true"
- "backupbot.backup.path=/var/www/html"
- "coop-cloud.${STACK_NAME}.version=2.5.1+6.3.0"
- "coop-cloud.${STACK_NAME}.version=2.6.2+6.4.1"
db:
image: "mariadb:11.0"
image: "mariadb:11.2"
volumes:
- "mariadb:/var/lib/mysql"
networks:
@ -79,10 +79,11 @@ services:
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "mariadb-dump --single-transaction -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress | gzip > /var/lib/mysql/dump.sql.gz"
backupbot.backup.pre-hook: "sh -c 'mariadb-dump --single-transaction -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress | gzip > /var/lib/mysql/dump.sql.gz'"
backupbot.backup.path: "/var/lib/mysql/dump.sql.gz"
backupbot.backup.post-hook: "rm -f /var/lib/mysql/dump.sql.gz"
backupbot.restore: "true"
backupbot.restore.post-hook: "sh -c 'mariadb -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress < /var/lib/mysql/dbdump.sql && rm -f /var/lib/mysql/dbdump.sql'"
backupbot.restore.post-hook: "sh -c 'gzip -d /var/lib/mysql/dump.sql.gz && mariadb -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress < /var/lib/mysql/dump.sql && rm -f /var/lib/mysql/dump.sql'"
networks:
backend:

View File

@ -7,9 +7,9 @@ docker-php-ext-install {{ env "PHP_EXTENSIONS" }}
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 (env "COMPOSER") "1" }}
{{ if eq (env "ENABLE_COMPOSER") "1" }}
mkdir -p /var/www/.composer
chown www-data:www-data /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;"