Statt einer Vorlage fuer alle liegt je Ring eine vollstaendige Compose im Repo. Eine Freigabe ist damit das Kopieren der Datei in den naechsten Ordner und in jedem git diff sichtbar. Fuer den Anfang ist nur "0 - intern" gefuellt; die beiden anderen Ordner erklaeren, dass dort noch kein Stand freigegeben ist. espo-compose-rendern nimmt jetzt <fqdn> und <ring> und bricht ab, wenn fuer den Ring kein Stand hinterlegt ist. Die Ringwerte 0/1/2 entsprechen dem Custom Field espo_ring. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
130 lines
3.8 KiB
YAML
130 lines
3.8 KiB
YAML
# Stand fuer Ring 0 (intern). Einziger kundenspezifischer Wert: __FQDN__.
|
|
# espo-compose-rendern <fqdn> <ring> setzt ihn ein und schreibt /srv/espo/docker-compose.yml.
|
|
# Aenderungen ausschliesslich hier im Repository, nie auf der VM.
|
|
# Freigabe in den naechsten Ring = diese Datei in dessen Ordner kopieren.
|
|
name: espocrm
|
|
|
|
services:
|
|
|
|
espocrm-db:
|
|
image: mariadb:12.3
|
|
container_name: espocrm-db
|
|
restart: unless-stopped
|
|
stop_grace_period: 120s
|
|
security_opt: ["no-new-privileges:true"]
|
|
environment:
|
|
MARIADB_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
|
|
MARIADB_DATABASE: espocrm
|
|
MARIADB_USER: espocrm
|
|
MARIADB_PASSWORD_FILE: /run/secrets/db_password
|
|
MARIADB_AUTO_UPGRADE: "1"
|
|
TZ: Europe/Berlin
|
|
secrets: [db_root_password, db_password]
|
|
volumes:
|
|
- /srv/espo/mariadb:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 20s
|
|
start_period: 60s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
espocrm:
|
|
image: espocrm:10.0.8
|
|
container_name: espocrm
|
|
restart: unless-stopped
|
|
stop_grace_period: 30s
|
|
security_opt: ["no-new-privileges:true"]
|
|
depends_on:
|
|
espocrm-db:
|
|
condition: service_healthy
|
|
environment:
|
|
ESPOCRM_DATABASE_PLATFORM: Mysql
|
|
ESPOCRM_DATABASE_HOST: espocrm-db
|
|
ESPOCRM_DATABASE_NAME: espocrm
|
|
ESPOCRM_DATABASE_USER: espocrm
|
|
ESPOCRM_DATABASE_PASSWORD_FILE: /run/secrets/db_password
|
|
ESPOCRM_ADMIN_USERNAME: admin
|
|
ESPOCRM_ADMIN_PASSWORD: admin
|
|
ESPOCRM_SITE_URL: https://__FQDN__
|
|
ESPOCRM_CONFIG_SITE_URL: https://__FQDN__
|
|
ESPOCRM_CONFIG_ADMIN_UPGRADE_DISABLED: "true"
|
|
ESPOCRM_CONFIG_USE_WEB_SOCKET: "true"
|
|
ESPOCRM_CONFIG_WEB_SOCKET_URL: wss://__FQDN__/wss
|
|
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN: "tcp://*:7777"
|
|
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN: tcp://espocrm-websocket:7777
|
|
TZ: Europe/Berlin
|
|
secrets: [db_password]
|
|
configs:
|
|
- source: recordId
|
|
target: /var/www/html/custom/Espo/Custom/Resources/metadata/app/recordId.json
|
|
volumes:
|
|
- /srv/espo/data:/var/www/html/data
|
|
- /srv/espo/custom:/var/www/html/custom
|
|
- /srv/espo/client-custom:/var/www/html/client/custom
|
|
ports:
|
|
- 8080:80
|
|
healthcheck:
|
|
test: ["CMD", "bin/command", "app-check"]
|
|
start_period: 300s
|
|
interval: 60s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
espocrm-daemon:
|
|
image: espocrm:10.0.8
|
|
container_name: espocrm-daemon
|
|
restart: unless-stopped
|
|
entrypoint: docker-daemon.sh
|
|
security_opt: ["no-new-privileges:true"]
|
|
environment:
|
|
TZ: Europe/Berlin
|
|
volumes_from: [espocrm]
|
|
configs:
|
|
- source: recordId
|
|
target: /var/www/html/custom/Espo/Custom/Resources/metadata/app/recordId.json
|
|
depends_on:
|
|
espocrm:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "bin/command", "app-check"]
|
|
start_period: 60s
|
|
interval: 180s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
espocrm-websocket:
|
|
image: espocrm:10.0.8
|
|
container_name: espocrm-websocket
|
|
restart: unless-stopped
|
|
entrypoint: docker-websocket.sh
|
|
security_opt: ["no-new-privileges:true"]
|
|
environment:
|
|
TZ: Europe/Berlin
|
|
volumes_from: [espocrm]
|
|
configs:
|
|
- source: recordId
|
|
target: /var/www/html/custom/Espo/Custom/Resources/metadata/app/recordId.json
|
|
depends_on:
|
|
espocrm:
|
|
condition: service_healthy
|
|
ports:
|
|
- 8081:8080
|
|
healthcheck:
|
|
test: ["CMD", "bin/command", "app-check"]
|
|
start_period: 60s
|
|
interval: 180s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
secrets:
|
|
db_root_password:
|
|
file: /srv/espo/secrets/db_root_password
|
|
db_password:
|
|
file: /srv/espo/secrets/db_password
|
|
|
|
configs:
|
|
recordId:
|
|
content: |
|
|
{"type": "uuid4", "length": 36}
|