mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-11-09 22:56:29 +00:00
- Added database readiness wait and proper Drush installation command - Ensured /sites/default/files is writable before installation - Switched to /opt/drupal/web as canonical Drupal root - Added missing PHP extension pdo_mysql - Adjusted Dockerfile and Compose volume paths - Drupal installation now runs successfully end-to-end Details: https://chatgpt.com/share/6905bb12-6de8-800f-be8c-b565d5ec6cdb
33 lines
1.6 KiB
YAML
33 lines
1.6 KiB
YAML
- name: "Wait for database readiness"
|
|
command: >
|
|
docker exec {{ DRUPAL_CONTAINER }} bash -lc
|
|
"php -r '
|
|
$h=\"{{ database_host }}\"; $p={{ database_port }};
|
|
$d=\"{{ database_name }}\"; $u=\"{{ database_username }}\"; $pw=\"{{ database_password }}\";
|
|
$t=microtime(true)+60; $ok=false;
|
|
while (microtime(true)<$t) {
|
|
try { new PDO(\"mysql:host=$h;port=$p;dbname=$d;charset=utf8mb4\", $u, $pw,[PDO::ATTR_TIMEOUT=>2]); $ok=true; break; }
|
|
catch (Exception $e) { usleep(300000); }
|
|
}
|
|
if (!$ok) { fwrite(STDERR, \"DB not ready\\n\"); exit(1); }'"
|
|
register: db_wait
|
|
retries: 1
|
|
failed_when: db_wait.rc != 0
|
|
|
|
- name: "Run Drupal site:install via Drush"
|
|
no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
|
|
command: >
|
|
docker exec {{ DRUPAL_CONTAINER }} bash -lc
|
|
"/opt/drupal/vendor/bin/drush -r {{ DRUPAL_DOCKER_HTML_PATH }} site:install standard -y
|
|
--db-url='mysql://{{ database_username }}:{{ database_password }}@{{ database_host }}:{{ database_port }}/{{ database_name }}'
|
|
--site-name='{{ applications | get_app_conf(application_id, 'title', True) }}'
|
|
--account-name='{{ applications | get_app_conf(application_id, 'users.administrator.username') }}'
|
|
--account-mail='{{ applications | get_app_conf(application_id, 'users.administrator.email', True) }}'
|
|
--account-pass='{{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}'
|
|
--uri='{{ DRUPAL_URL }}'"
|
|
args:
|
|
chdir: "{{ docker_compose.directories.instance }}"
|
|
register: drupal_install
|
|
changed_when: "'Installation complete' in drupal_install.stdout"
|
|
failed_when: false
|