mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-28 18:30:24 +02:00
Optimized espocrm websocket and docker-compose
This commit is contained in:
parent
edf2be504c
commit
4e04f882e5
@ -3,6 +3,7 @@ ports:
|
|||||||
localhost:
|
localhost:
|
||||||
web_socket:
|
web_socket:
|
||||||
mastodon: 4001
|
mastodon: 4001
|
||||||
|
espocrm: 4002
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
phpmyadmin: 4181
|
phpmyadmin: 4181
|
||||||
lam: 4182
|
lam: 4182
|
||||||
|
@ -1,17 +1,29 @@
|
|||||||
|
# ./roles/docker-espocrm/tasks/main.yml
|
||||||
---
|
---
|
||||||
- name: "include docker-central-database"
|
- name: "include docker-central-database"
|
||||||
include_role:
|
include_role:
|
||||||
name: docker-central-database
|
name: docker-central-database
|
||||||
|
|
||||||
|
# -- Nginx reverse proxy and Let's Encrypt certificates (same pattern as the Gitea role) --
|
||||||
|
- name: "include role nginx-domain-setup for {{ application_id }}"
|
||||||
|
include_role:
|
||||||
|
name: nginx-domain-setup
|
||||||
|
vars:
|
||||||
|
domain: "{{ domains[application_id] }}"
|
||||||
|
http_port: "{{ ports.localhost.http[application_id] }}"
|
||||||
|
|
||||||
|
# -- Copy docker-compose.yml and .env --
|
||||||
- name: "copy docker-compose.yml and env file"
|
- name: "copy docker-compose.yml and env file"
|
||||||
include_tasks: copy-docker-compose-and-env.yml
|
include_tasks: copy-docker-compose-and-env.yml
|
||||||
|
|
||||||
|
# -- Ensure containers are (re)started after the initial setup --
|
||||||
- name: flush docker service
|
- name: flush docker service
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
when: applications.espocrm.setup | bool
|
when: applications.espocrm.setup | bool
|
||||||
|
|
||||||
|
# -- Run database initialisation or upgrade --
|
||||||
- name: "run database setup / upgrade"
|
- name: "run database setup / upgrade"
|
||||||
command:
|
command:
|
||||||
cmd: "docker compose run --rm web php command.php upgrade"
|
cmd: "docker compose run --rm web php command.php upgrade"
|
||||||
chdir: "{{ docker_compose.directories.instance }}"
|
chdir: "{{ docker_compose.directories.instance }}"
|
||||||
when: applications.espocrm.setup | bool
|
when: applications.espocrm.setup | bool
|
||||||
|
@ -6,15 +6,20 @@ services:
|
|||||||
image: espocrm/espocrm:{{ applications.espocrm.version }}
|
image: espocrm/espocrm:{{ applications.espocrm.version }}
|
||||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_HOST={{ database_host }}
|
# --- DB connection ----------------------------------------------------
|
||||||
- DATABASE_PORT={{ database_port }}
|
- ESPOCRM_DATABASE_PLATFORM=Mysql # EspoCRM expects ‘Mysql’ even for MariaDB
|
||||||
- DATABASE_NAME={{ database_name }}
|
- ESPOCRM_DATABASE_HOST={{ database_host }}
|
||||||
- DATABASE_USER={{ database_username }}
|
- ESPOCRM_DATABASE_PORT={{ database_port }}
|
||||||
- DATABASE_PASSWORD={{ database_password }}
|
- ESPOCRM_DATABASE_NAME={{ database_name }}
|
||||||
- CRON=disable # cron handled by separate service
|
- ESPOCRM_DATABASE_USER={{ database_username }}
|
||||||
command: apache2-foreground
|
- ESPOCRM_DATABASE_PASSWORD={{ database_password }}
|
||||||
|
# --- initial admin & site URL ----------------------------------------
|
||||||
|
- ESPOCRM_ADMIN_USERNAME={{ applications[application_id].credentials.admin.username }}
|
||||||
|
- ESPOCRM_ADMIN_PASSWORD={{ applications[application_id].credentials.admin.password }}
|
||||||
|
- ESPOCRM_SITE_URL={{ web_protocol }}://{{ domains[application_id] }}
|
||||||
|
command: "php-fpm"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost/" ]
|
test: ["CMD", "curl", "-f", "http://localhost/"]
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:80"
|
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:80"
|
||||||
{% include 'templates/docker/container/depends-on-database.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-database.yml.j2' %}
|
||||||
@ -22,18 +27,34 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
|
||||||
cron:
|
daemon: # ↔ was “espocrm-daemon” in the example
|
||||||
image: espocrm/espocrm:{{ applications.espocrm.version }}
|
image: espocrm/espocrm:{{ applications.espocrm.version }}
|
||||||
command: /usr/local/bin/cron.sh
|
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||||
restart: unless-stopped
|
entrypoint: docker-daemon.sh
|
||||||
{% include 'templates/docker/container/depends-on-database.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-database.yml.j2' %}
|
||||||
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
websocket: # ↔ was “espocrm-websocket” in the example
|
||||||
|
image: espocrm/espocrm:{{ applications.espocrm.version }}
|
||||||
|
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||||
|
environment:
|
||||||
|
- ESPOCRM_CONFIG_USE_WEB_SOCKET=true
|
||||||
|
- ESPOCRM_CONFIG_WEB_SOCKET_URL=ws://{{ domains[application_id] }}/ws
|
||||||
|
- ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN=tcp://*:7777
|
||||||
|
- ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN=tcp://websocket:7777
|
||||||
|
entrypoint: docker-websocket.sh
|
||||||
|
{% include 'templates/docker/container/depends-on-database.yml.j2' %}
|
||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
healthcheck:
|
volumes:
|
||||||
test: ["CMD", "pgrep", "cron"]
|
- data:/var/www/html
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "{{ ports.localhost.websocket[application_id] | default('127.0.0.1:8081') }}:8080"
|
||||||
|
|
||||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||||
data:
|
data:
|
||||||
|
|
||||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||||
|
@ -1,10 +1,16 @@
|
|||||||
# EspoCRM environment
|
# EspoCRM environment
|
||||||
# Database connection
|
# Database connection
|
||||||
DATABASE_HOST={{ database_host }}
|
ESPOCRM_DATABASE_HOST={{ database_host }}
|
||||||
DATABASE_PORT={{ database_port }}
|
ESPOCRM_DATABASE_PORT={{ database_port }}
|
||||||
DATABASE_NAME={{ database_name }}
|
ESPOCRM_DATABASE_NAME={{ database_name }}
|
||||||
DATABASE_USER={{ database_username }}
|
ESPOCRM_DATABASE_USER={{ database_username }}
|
||||||
DATABASE_PASSWORD={{ database_password }}
|
ESPOCRM_DATABASE_PASSWORD={{ database_password }}
|
||||||
|
# Cron toggle
|
||||||
|
CRON_DISABLED=true
|
||||||
|
|
||||||
|
ESPOCRM_ADMIN_USERNAME: admin
|
||||||
|
ESPOCRM_ADMIN_PASSWORD: password
|
||||||
|
ESPOCRM_SITE_URL: "http://localhost:8080"
|
||||||
|
|
||||||
# SMTP settings (example)
|
# SMTP settings (example)
|
||||||
SMTP_HOST={{ system_email.host }}
|
SMTP_HOST={{ system_email.host }}
|
||||||
|
@ -2,4 +2,4 @@ application_id: "espocrm"
|
|||||||
# Password for the espocrm DB user (taken from inventory applications dict)
|
# Password for the espocrm DB user (taken from inventory applications dict)
|
||||||
database_password: "{{ applications[application_id].credentials.database.password }}"
|
database_password: "{{ applications[application_id].credentials.database.password }}"
|
||||||
# EspoCRM uses MySQL/MariaDB
|
# EspoCRM uses MySQL/MariaDB
|
||||||
database_type: "mysql"
|
database_type: "mariadb"
|
Loading…
x
Reference in New Issue
Block a user