mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-10-10 10:48:10 +02:00
EspoCRM role: custom image + single data volume + runtime flag setter
• Build a custom image and replace upstream entrypoint with docker-entrypoint-custom.sh (strict fail on flag script). • Introduce set_flags.php and wire via ESPOCRM_SET_FLAGS_SCRIPT; apply flags at container start; clear cache afterwards. • Keep exactly one Docker volume (data:/var/www/html/); drop separate custom/extensions mounts. • Compose: use custom image, add healthchecks & depends_on for daemon/websocket; keep service healthy gating. • Ansible: deploy scripts, build & up via handlers; patch siteUrl as www-data; run upgrade non-fatal; always run flag setter. • Vars/Env: add ESPO_INIT_* toggles and ESPOCRM_SET_FLAGS_SCRIPT; refactor variables for scripts & custom image paths. Conversation context: https://chatgpt.com/share/68dd1992-020c-800f-bcf5-2db60cb4aab2
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
|
||||
- name: Ensure siteUrl matches canonical domain
|
||||
ansible.builtin.shell: |
|
||||
{{ docker_compose_command_exec }} -T {{ ESPOCRM_SERVICE }} php -r '
|
||||
{{ docker_compose_command_exec }} -T --user {{ ESPOCRM_USER }} {{ ESPOCRM_SERVICE }} php -r '
|
||||
require "/var/www/html/bootstrap.php";
|
||||
$app = new \Espo\Core\Application();
|
||||
$c = $app->getContainer();
|
||||
@@ -54,57 +54,3 @@
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
register: siteurl_set
|
||||
changed_when: "'CHANGED' in siteurl_set.stdout"
|
||||
|
||||
- name: Ensure maintenance off, cron on, cache on (idempotent via ConfigWriter)
|
||||
block:
|
||||
- name: Apply config via ConfigWriter as app user
|
||||
command: >
|
||||
docker exec --user {{ ESPOCRM_USER }} {{ ESPOCRM_CONTAINER }}
|
||||
php -r '
|
||||
require "/var/www/html/bootstrap.php";
|
||||
$app = new \Espo\Core\Application();
|
||||
$c = $app->getContainer();
|
||||
$cfg = $c->get("config");
|
||||
$w = $c->get("injectableFactory")->create("\Espo\Core\Utils\Config\ConfigWriter");
|
||||
$pairs = [
|
||||
"maintenanceMode" => false,
|
||||
"cronDisabled" => false,
|
||||
"useCache" => true
|
||||
];
|
||||
$changed = false;
|
||||
foreach ($pairs as $k => $v) {
|
||||
if ($cfg->get($k) !== $v) { $w->set($k, $v); $changed = true; }
|
||||
}
|
||||
if ($changed) { $w->save(); echo "CHANGED"; }
|
||||
'
|
||||
register: cfg_set
|
||||
changed_when: "'CHANGED' in cfg_set.stdout"
|
||||
|
||||
rescue:
|
||||
- name: Apply config via ConfigWriter as root (fallback)
|
||||
command: >
|
||||
docker exec --user root {{ ESPOCRM_CONTAINER }}
|
||||
php -r '
|
||||
require "/var/www/html/bootstrap.php";
|
||||
$app = new \Espo\Core\Application();
|
||||
$c = $app->getContainer();
|
||||
$cfg = $c->get("config");
|
||||
$w = $c->get("injectableFactory")->create("\Espo\Core\Utils\Config\ConfigWriter");
|
||||
$pairs = [
|
||||
"maintenanceMode" => false,
|
||||
"cronDisabled" => false,
|
||||
"useCache" => true
|
||||
];
|
||||
$changed = false;
|
||||
foreach ($pairs as $k => $v) {
|
||||
if ($cfg->get($k) !== $v) { $w->set($k, $v); $changed = true; }
|
||||
}
|
||||
if ($changed) { $w->save(); echo "CHANGED"; }
|
||||
'
|
||||
register: cfg_set
|
||||
changed_when: "'CHANGED' in cfg_set.stdout"
|
||||
|
||||
- name: Clear EspoCRM cache (only when config changed and we are updating)
|
||||
command: >
|
||||
docker exec --user {{ ESPOCRM_USER }} {{ ESPOCRM_CONTAINER }} php clear_cache.php
|
||||
when: "'CHANGED' in cfg_set.stdout and MODE_UPDATE | bool"
|
||||
|
Reference in New Issue
Block a user