mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-10-10 02:38:10 +02:00
web-app-espocrm: add resource limits, init/stop settings and cleanups
- Added CPU, memory and PID limits for espocrm, daemon and websocket services - Enabled init process and graceful stop (SIGTERM, 30s) in docker-compose - Adjusted env template (removed forced True/default flags) - Introduced entity_name/ESPOCRM_SERVICE in vars for service naming - Minor cleanup of get_app_conf defaults Ref: https://chatgpt.com/share/68d937ce-9c34-800f-9136-54baed9c91c7
This commit is contained in:
@@ -33,8 +33,22 @@ docker:
|
|||||||
database:
|
database:
|
||||||
enabled: true
|
enabled: true
|
||||||
espocrm:
|
espocrm:
|
||||||
image: "espocrm/espocrm"
|
image: "espocrm/espocrm"
|
||||||
version: "latest"
|
version: "latest"
|
||||||
name: "espocrm"
|
name: "espocrm"
|
||||||
|
cpus: 1.5
|
||||||
|
mem_reservation: 1.2g
|
||||||
|
mem_limit: 2g
|
||||||
|
pids_limit: 768
|
||||||
|
daemon:
|
||||||
|
cpus: 0.5
|
||||||
|
mem_reservation: 0.25g
|
||||||
|
mem_limit: 0.5g
|
||||||
|
pids_limit: 384
|
||||||
|
websocket:
|
||||||
|
cpus: 0.5
|
||||||
|
mem_reservation: 0.25g
|
||||||
|
mem_limit: 0.5g
|
||||||
|
pids_limit: 384
|
||||||
volumes:
|
volumes:
|
||||||
data: espocrm_data
|
data: espocrm_data
|
||||||
|
@@ -1,7 +1,12 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
web:
|
|
||||||
|
{% set service_name = ESPOCRM_SERVICE %}
|
||||||
|
{{ service_name }}:
|
||||||
container_name: {{ ESPOCRM_CONTAINER }}
|
container_name: {{ ESPOCRM_CONTAINER }}
|
||||||
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
||||||
|
init: true
|
||||||
|
stop_signal: SIGTERM
|
||||||
|
stop_grace_period: 30s
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
@@ -11,21 +16,27 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
|
||||||
daemon:
|
{% set service_name = 'daemon' %}
|
||||||
|
{{ service_name }}:
|
||||||
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
||||||
restart: {{ DOCKER_RESTART_POLICY }}
|
container_name: {{ ESPOCRM_CONTAINER }}_{{ service_name }}
|
||||||
logging:
|
init: true
|
||||||
driver: journald
|
stop_signal: SIGTERM
|
||||||
|
stop_grace_period: 30s
|
||||||
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
entrypoint: docker-daemon.sh
|
entrypoint: docker-daemon.sh
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
|
||||||
websocket:
|
{% set service_name = 'websocket' %}
|
||||||
|
{{ service_name }}:
|
||||||
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}"
|
||||||
restart: {{ DOCKER_RESTART_POLICY }}
|
container_name: {{ ESPOCRM_CONTAINER }}_{{ service_name }}
|
||||||
logging:
|
init: true
|
||||||
driver: journald
|
stop_signal: SIGTERM
|
||||||
|
stop_grace_period: 30s
|
||||||
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
environment:
|
environment:
|
||||||
- ESPOCRM_CONFIG_USE_WEB_SOCKET=true
|
- ESPOCRM_CONFIG_USE_WEB_SOCKET=true
|
||||||
- ESPOCRM_CONFIG_WEB_SOCKET_URL={{ WEBSOCKET_PROTOCOL }}://{{ domains | get_domain(application_id) }}/ws
|
- ESPOCRM_CONFIG_WEB_SOCKET_URL={{ WEBSOCKET_PROTOCOL }}://{{ domains | get_domain(application_id) }}/ws
|
||||||
|
@@ -20,7 +20,7 @@ CRON_DISABLED=true
|
|||||||
# Initial admin account
|
# Initial admin account
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
ESPOCRM_ADMIN_USERNAME={{ applications | get_app_conf(application_id, 'users.administrator.username') }}
|
ESPOCRM_ADMIN_USERNAME={{ applications | get_app_conf(application_id, 'users.administrator.username') }}
|
||||||
ESPOCRM_ADMIN_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}
|
ESPOCRM_ADMIN_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password') }}
|
||||||
|
|
||||||
# Public base URL of the EspoCRM instance
|
# Public base URL of the EspoCRM instance
|
||||||
ESPOCRM_SITE_URL={{ ESPOCRM_URL }}
|
ESPOCRM_SITE_URL={{ ESPOCRM_URL }}
|
||||||
@@ -54,14 +54,14 @@ ESPOCRM_CONFIG_SMTP_SECURITY={{ "TLS" if SYSTEM_EMAIL.START_TLS else "SSL"}}
|
|||||||
ESPOCRM_CONFIG_SMTP_AUTH=true
|
ESPOCRM_CONFIG_SMTP_AUTH=true
|
||||||
ESPOCRM_CONFIG_SMTP_USERNAME={{ users['contact'].email }}
|
ESPOCRM_CONFIG_SMTP_USERNAME={{ users['contact'].email }}
|
||||||
ESPOCRM_CONFIG_SMTP_PASSWORD={{ users['contact'].mailu_token }}
|
ESPOCRM_CONFIG_SMTP_PASSWORD={{ users['contact'].mailu_token }}
|
||||||
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_NAME={{ applications | get_app_conf(application_id, 'email.from_name', True)}}
|
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_NAME={{ applications | get_app_conf(application_id, 'email.from_name')}}
|
||||||
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_ADDRESS={{ users['contact'].email }}
|
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_ADDRESS={{ users['contact'].email }}
|
||||||
|
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
# LDAP settings (optional)
|
# LDAP settings (optional)
|
||||||
# Applied only if the feature flag is true
|
# Applied only if the feature flag is true
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
{% if applications | get_app_conf(application_id, 'features.ldap', False) %}
|
{% if applications | get_app_conf(application_id, 'features.ldap') %}
|
||||||
ESPOCRM_CONFIG_AUTHENTICATION_METHOD=Ldap
|
ESPOCRM_CONFIG_AUTHENTICATION_METHOD=Ldap
|
||||||
ESPOCRM_CONFIG_LDAP_HOST={{ LDAP.SERVER.DOMAIN }}
|
ESPOCRM_CONFIG_LDAP_HOST={{ LDAP.SERVER.DOMAIN }}
|
||||||
ESPOCRM_CONFIG_LDAP_PORT={{ LDAP.SERVER.PORT }}
|
ESPOCRM_CONFIG_LDAP_PORT={{ LDAP.SERVER.PORT }}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
# General
|
# General
|
||||||
application_id: "web-app-espocrm"
|
application_id: "web-app-espocrm"
|
||||||
|
entity_name: "{{ application_id | get_entity_name }}"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
@@ -11,11 +12,13 @@ client_max_body_size: "100m"
|
|||||||
vhost_flavour: "ws_generic"
|
vhost_flavour: "ws_generic"
|
||||||
|
|
||||||
# Espocrm
|
# Espocrm
|
||||||
ESPOCRM_VERSION: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.version', True) }}"
|
ESPOCRM_VERSION: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.version') }}"
|
||||||
ESPOCRM_IMAGE: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.image', True) }}"
|
ESPOCRM_IMAGE: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.image') }}"
|
||||||
ESPOCRM_CONTAINER: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.name', True) }}"
|
ESPOCRM_CONTAINER: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.name') }}"
|
||||||
ESPOCRM_VOLUME: "{{ applications | get_app_conf(application_id, 'docker.volumes.data', True) }}"
|
ESPOCRM_VOLUME: "{{ applications | get_app_conf(application_id, 'docker.volumes.data') }}"
|
||||||
|
ESPOCRM_SERVICE: "{{ entity_name }}"
|
||||||
|
|
||||||
ESPOCRM_CONFIG_FILE_PRIVATE: "/var/www/html/data/config-internal.php"
|
ESPOCRM_CONFIG_FILE_PRIVATE: "/var/www/html/data/config-internal.php"
|
||||||
ESPOCRM_URL: "{{ domains | get_url(application_id, WEB_PROTOCOL) }}"
|
ESPOCRM_URL: "{{ domains | get_url(application_id, WEB_PROTOCOL) }}"
|
||||||
ESPOCRM_OIDC_ENABLED: "{{ applications | get_app_conf(application_id, 'features.oidc', False) }}"
|
ESPOCRM_OIDC_ENABLED: "{{ applications | get_app_conf(application_id, 'features.oidc') }}"
|
||||||
ESPOCRM_USER: "www-data"
|
ESPOCRM_USER: "www-data"
|
||||||
|
Reference in New Issue
Block a user