Added database patch to wordpress

This commit is contained in:
Kevin Veen-Birkenbach 2025-08-11 21:46:07 +02:00
parent 918355743f
commit de15c42de8
No known key found for this signature in database
GPG Key ID: 44D8F11FD62F878E
9 changed files with 56 additions and 11 deletions

View File

@ -2,22 +2,22 @@
command: >
docker exec --user root {{ espocrm_name }}
sed -i "s/'host' => .*/'host' => '{{ database_host }}',/" {{ espocrm_config_file }}
notify: docker compose up
notify: docker compose restart
- name: Update DB name
command: >
docker exec --user root {{ espocrm_name }}
sed -i "s/'dbname' => .*/'dbname' => '{{ database_name }}',/" {{ espocrm_config_file }}
notify: docker compose up
notify: docker compose restart
- name: Update DB user
command: >
docker exec --user root {{ espocrm_name }}
sed -i "s/'user' => .*/'user' => '{{ database_username }}',/" {{ espocrm_config_file }}
notify: docker compose up
notify: docker compose restart
- name: Update DB password
command: >
docker exec --user root {{ espocrm_name }}
sed -i "s/'password' => .*/'password' => '{{ database_password }}',/" {{ espocrm_config_file }}
notify: docker compose up
notify: docker compose restart

View File

@ -2,23 +2,28 @@
command: >
docker exec --user root {{ moodle_container }}
sed -i "s/^\$CFG->dbhost *= *.*/\$CFG->dbhost = '{{ database_host }}';/" {{ moodle_config }}
notify: docker compose restart
- name: Update DB name
command: >
docker exec --user root {{ moodle_container }}
sed -i "s/^\$CFG->dbname *= *.*/\$CFG->dbname = '{{ database_name }}';/" {{ moodle_config }}
notify: docker compose restart
- name: Update DB user
command: >
docker exec --user root {{ moodle_container }}
sed -i "s/^\$CFG->dbuser *= *.*/\$CFG->dbuser = '{{ database_username }}';/" {{ moodle_config }}
notify: docker compose restart
- name: Update DB password
command: >
docker exec --user root {{ moodle_container }}
sed -i "s/^\$CFG->dbpass *= *.*/\$CFG->dbpass = '{{ database_password }}';/" {{ moodle_config }}
notify: docker compose restart
- name: Update CFG->wwwroot via sed in container
command: >
docker exec --user root {{ moodle_container }}
sed -i -E "s|^(\$CFG->wwwroot[[:space:]]*=[[:space:]]*).*$|\1'{{ domains | get_url(application_id, WEB_PROTOCOL) }}';|" {{ moodle_config }}
notify: docker compose restart

View File

@ -13,7 +13,7 @@ features:
port-ui-desktop: true
oidc: true
central_database: true
logout: true
logout: true
server:
csp:
flags:

View File

@ -0,0 +1,28 @@
# The seeds need to be executed as root, because www-data isn't allowed to create files in the wordpress directory
- name: Update DB host in wp-config.php
command: >
docker exec --user root {{ wordpress_container }}
sed -i "s/define(\s*'DB_HOST'\s*,\s*'[^']*'\s*);/define( 'DB_HOST', '{{ database_host }}:{{ database_port }}' );/i" {{ wordpress_docker_conf_path }}
notify: docker compose restart
- name: Update DB name in wp-config.php
command: >
docker exec --user root {{ wordpress_container }}
sed -i "s/define(\s*'DB_NAME'\s*,\s*'[^']*'\s*);/define( 'DB_NAME', '{{ database_name }}' );/i" {{ wordpress_docker_conf_path }}
notify: docker compose restart
- name: Update DB user in wp-config.php
command: >
docker exec --user root {{ wordpress_container }}
sed -i "s/define(\s*'DB_USER'\s*,\s*'[^']*'\s*);/define( 'DB_USER', '{{ database_username }}' );/i" {{ wordpress_docker_conf_path }}
notify: docker compose restart
- name: Update DB password in wp-config.php
command: >
docker exec --user root {{ wordpress_container }}
sed -i "s/define(\s*'DB_PASSWORD'\s*,\s*'[^']*'\s*);/define( 'DB_PASSWORD', '{{ database_password }}' );/i" {{ wordpress_docker_conf_path }}
notify: docker compose restart
- name: "Flush handlers to reinitialize new database credentials"
meta: flush_handlers

View File

@ -1,6 +1,6 @@
- name: "Run WordPress core install via WP CLI"
command: >
docker-compose exec -T -u www-data application
docker exec -u {{ wordpress_user }} {{ wordpress_container }}
wp core install
--url="{{ domains | get_url(application_id, WEB_PROTOCOL) }}"
--title="{{ applications | get_app_conf(application_id, 'title', True) }}"

View File

@ -25,13 +25,23 @@
dest: "{{ host_msmtp_conf }}"
notify: docker compose up
- name: Check if wp-config.php exists in WordPress
command: docker exec -u {{ wordpress_user }} {{ wordpress_container }} test -f {{ wordpress_docker_html_path }}/wp-config.php
register: wp_config_file_exists
changed_when: false
failed_when: false
- name: Patch WordPress wp-config.php with updated DB credentials
include_tasks: 01_patch_config.yml
when: wp_config_file_exists.rc == 0
- name: "Install wordpress"
include_tasks: install.yml
include_tasks: 02_install.yml
- name: "Install and activate WordPress plugins"
block:
- name: "Iterate through WordPress plugins"
include_tasks: plugin.yml
include_tasks: 03_enable_plugin.yml
loop: "{{ wordpress_plugins }}"
loop_control:
label: "{{ item.key }}"

View File

@ -2,7 +2,7 @@
application:
{% include 'roles/docker-container/templates/base.yml.j2' %}
image: {{ wordpress_custom_image }}
container_name: {{ wordpress_name }}
container_name: {{ wordpress_container }}
build:
context: .
ports:

View File

@ -7,9 +7,11 @@ host_msmtp_conf: "{{docker_compose.directories.config}}msmtprc.conf"
wordpress_max_upload_size: "{{ applications | get_app_conf(application_id, 'max_upload_size') }}"
wordpress_custom_image: "wordpress_custom"
wordpress_docker_html_path: "/var/www/html"
wordpress_docker_conf_path: "{{ wordpress_docker_html_path }}/wp-config.php"
wordpress_version: "{{ applications | get_app_conf(application_id, 'docker.services.wordpress.version', True) }}"
wordpress_image: "{{ applications | get_app_conf(application_id, 'docker.services.wordpress.image', True) }}"
wordpress_name: "{{ applications | get_app_conf(application_id, 'docker.services.wordpress.name', True) }}"
wordpress_container: "{{ applications | get_app_conf(application_id, 'docker.services.wordpress.name', True) }}"
wordpress_volume: "{{ applications | get_app_conf(application_id, 'docker.volumes.data', True) }}"
wordpress_domains: "{{ applications | get_app_conf(application_id, 'server.domains.canonical', True) }}"
wordpress_plugins: "{{ applications | get_app_conf(application_id, 'plugins', True) | dict2items }}"
wordpress_user: "www-data"