mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-07-08 01:25:14 +02:00
Refactored docker-compose roles
This commit is contained in:
parent
2ea7a606b6
commit
38ed1e94e8
@ -111,11 +111,6 @@ Now that you have defined the application settings, domain, and application ID,
|
||||
dockerfile: {{ path_cymais_my_service_output.stdout }}/Dockerfile
|
||||
ports:
|
||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:5000"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:5000"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
volumes:
|
||||
- {{ path_cymais_my_service_output.stdout }}:/app
|
||||
- {{ path_cymais_output.stdout }}:/source
|
||||
|
@ -1,10 +1,7 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
image: "{{ applications[application_id].images[application_id] }}"
|
||||
build:
|
||||
@ -16,7 +13,7 @@ services:
|
||||
environment:
|
||||
- AKAUNTING_SETUP
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -12,4 +12,8 @@ credentials:
|
||||
domains:
|
||||
canonical:
|
||||
- "accounting.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
|
||||
|
@ -1,8 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
web:
|
||||
image: "{{ applications[application_id].images.web }}"
|
||||
@ -11,7 +7,7 @@ services:
|
||||
volumes:
|
||||
- .:/usr/share/nginx/html
|
||||
- .:/var/www
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
maildev:
|
||||
worker:
|
||||
env_file:
|
||||
@ -20,7 +16,7 @@ services:
|
||||
|
||||
worker:
|
||||
image: "{{ applications[application_id].images.worker }}"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
maildev:
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
volumes:
|
||||
|
@ -7,7 +7,12 @@ features:
|
||||
css: true
|
||||
portfolio_iframe: false
|
||||
central_database: true
|
||||
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
||||
domains:
|
||||
canonical:
|
||||
- "tickets.{{ primary_domain }}"
|
@ -1,11 +1,7 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications[application_id].images.baserow }}"
|
||||
container_name: baserow-application
|
||||
volumes:
|
||||
@ -13,7 +9,7 @@ services:
|
||||
ports:
|
||||
- "{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -1,7 +1,13 @@
|
||||
images:
|
||||
baserow: "baserow/baserow:latest"
|
||||
baserow: "baserow/baserow:latest"
|
||||
features:
|
||||
matomo: true
|
||||
css: true
|
||||
portfolio_iframe: true
|
||||
central_database: true
|
||||
central_database: true
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,17 +1,17 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
pds:
|
||||
{% set container_port = 3000 %}
|
||||
{% set container_healthcheck = 'xrpc/_health' %}
|
||||
image: "{{ applications[application_id].images.pds }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- pds_data:/opt/pds
|
||||
- {{pdsadmin_file_path}}:/usr/local/bin/pdsadmin:ro
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http.bluesky_api}}:3000"
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "http://127.0.0.1:3000/xrpc/_health"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
- "127.0.0.1:{{ports.localhost.http.bluesky_api}}:{{ container_port }}"
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
# Deactivated for the moment @see https://github.com/bluesky-social/social-app
|
||||
|
@ -11,4 +11,8 @@ features:
|
||||
domains:
|
||||
canonical:
|
||||
web: "bskyweb.{{ primary_domain }}"
|
||||
api: "bluesky.{{ primary_domain }}"
|
||||
api: "bluesky.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -0,0 +1 @@
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
@ -1,6 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
collabora:
|
||||
image: collabora/code
|
||||
@ -8,8 +6,8 @@ services:
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -1,3 +1,9 @@
|
||||
domains:
|
||||
canonical:
|
||||
- "collabora.{{ primary_domain }}"
|
||||
- "collabora.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: false # May this is wrong. Just set during refactoring
|
15
roles/docker-compose/templates/base.yml.j2
Normal file
15
roles/docker-compose/templates/base.yml.j2
Normal file
@ -0,0 +1,15 @@
|
||||
{# Base template for all docker-compose.yml.j2 #}
|
||||
services:
|
||||
{# Load Database #}
|
||||
{% if applications[application_id].docker.database.enabled | default(false) | bool %}
|
||||
{% include 'roles/docker-central-database/templates/services/main.yml.j2' %}
|
||||
{% endif %}
|
||||
{# Load Redis #}
|
||||
{% if applications[application_id].docker.redis.enabled | default(false) | bool %}
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
{% endif %}
|
||||
{# Load OAuth2 Proxy #}
|
||||
{% if not applications | is_feature_enabled('oauth2',application_id) %}
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% endif %}
|
||||
{{ "\n" }}
|
17
roles/docker-container/templates/depends_on_dmbs.j2
Normal file
17
roles/docker-container/templates/depends_on_dmbs.j2
Normal file
@ -0,0 +1,17 @@
|
||||
{# This template needs to be included in docker-compose.yml containers, which depend on a database, redis and optional additional volumes #}
|
||||
{% if applications | is_feature_enabled('central_database', application_id)
|
||||
and not (applications[application_id].docker.redis.enabled
|
||||
| default(false)
|
||||
| bool) %}
|
||||
depends_on: []
|
||||
{% else %}
|
||||
depends_on:
|
||||
{% if not applications | is_feature_enabled('central_database', application_id) %}
|
||||
database:
|
||||
condition: service_healthy
|
||||
{% endif %}
|
||||
{% if applications[application_id].docker.redis.enabled | default(false) | bool %}
|
||||
redis:
|
||||
condition: service_healthy
|
||||
{% endif %}
|
||||
{% endif %}
|
9
roles/docker-container/templates/healthcheck/curl.yml.j2
Normal file
9
roles/docker-container/templates/healthcheck/curl.yml.j2
Normal file
@ -0,0 +1,9 @@
|
||||
healthcheck:
|
||||
test:
|
||||
- "CMD"
|
||||
- "curl"
|
||||
- "-f"
|
||||
- "http://127.0.0.1{{ (":" ~ container_port) if container_port is defined else '' }}/{{ container_healthcheck | default('') }}"
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
6
roles/docker-container/templates/healthcheck/tcp.yml.j2
Normal file
6
roles/docker-container/templates/healthcheck/tcp.yml.j2
Normal file
@ -0,0 +1,6 @@
|
||||
healthcheck:
|
||||
test:
|
||||
- "CMD"
|
||||
- "bash"
|
||||
- "-c"
|
||||
- "exec 3<>/dev/tcp/localhost/{{ container_port }} && echo -e 'GET /{{ container_healthcheck | default('') }} HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"
|
10
roles/docker-container/templates/healthcheck/wget.yml.j2
Normal file
10
roles/docker-container/templates/healthcheck/wget.yml.j2
Normal file
@ -0,0 +1,10 @@
|
||||
healthcheck:
|
||||
test:
|
||||
- "CMD"
|
||||
- "wget"
|
||||
- "--spider"
|
||||
- "--proxy=off"
|
||||
- "http://127.0.0.1{{ (":" ~ container_port) if container_port is defined else '' }}/{{ container_healthcheck | default('') }}"
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
@ -1,24 +1,18 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "gitea/gitea:{{applications.gitea.version}}"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:3000"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
- "{{ports.public.ssh[application_id]}}:22"
|
||||
volumes:
|
||||
- data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -1,2 +1,3 @@
|
||||
application_id: "coturn"
|
||||
container_port: 3000
|
||||
#database_type: "mariadb"
|
@ -1,8 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
redis:
|
||||
|
@ -21,3 +21,9 @@ csp:
|
||||
domains:
|
||||
canonical:
|
||||
- "forum.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
redis:
|
||||
enabled: true
|
@ -1,4 +1,4 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
elasticsearch:
|
||||
build:
|
||||
context: elasticsearch/
|
||||
@ -61,5 +61,7 @@ services:
|
||||
depends_on:
|
||||
- elasticsearch
|
||||
|
||||
volumes:
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
elasticsearch:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -1,15 +1,11 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
web:
|
||||
image: "{{ applications[application_id].images.espocrm }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost/"]
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:80"
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
volumes:
|
||||
- data:/var/www/html
|
||||
@ -35,7 +31,7 @@ services:
|
||||
- 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-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
volumes:
|
||||
- data:/var/www/html
|
||||
|
@ -26,4 +26,8 @@ domains:
|
||||
aliases:
|
||||
- "crm.{{ primary_domain }}"
|
||||
email:
|
||||
from_name: "Customer Relationship Management ({{ primary_domain }})"
|
||||
from_name: "Customer Relationship Management ({{ primary_domain }})"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,10 +1,7 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
image: "{{ applications[application_id].images.friendica }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- html:{{ friendica_application_base }}
|
||||
- data:/var/www/data # I assume that this one is unnessecarry
|
||||
@ -12,10 +9,9 @@ services:
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
|
||||
{% include 'roles/docker-compose/templates/services/msmtp_curl_test.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/msmtp_curl.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -25,4 +25,8 @@ oauth2_proxy:
|
||||
port: "80"
|
||||
addons:
|
||||
keycloakpassword:
|
||||
ldapauth:
|
||||
ldapauth:
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,8 +1,4 @@
|
||||
services:
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
celeryworker:
|
||||
# Celery workers handle background tasks (such file imports or federation
|
||||
# messaging). The more processes a worker gets, the more tasks
|
||||
@ -12,7 +8,7 @@ services:
|
||||
# of CPUs. You can adjust this, by explicitly setting the --concurrency
|
||||
# flag:
|
||||
# celery -A funkwhale_api.taskapp worker -l INFO --concurrency=4
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications | get_docker_image(application_id,'api') }}"
|
||||
command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency={{celeryd_concurrency}}
|
||||
environment:
|
||||
@ -20,18 +16,18 @@ services:
|
||||
volumes:
|
||||
- "data:{{funkwhale_media_root}}"
|
||||
- "music:{{funkwhale_music_directory_path}}:ro"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
celerybeat:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications | get_docker_image(application_id,'api') }}"
|
||||
command: celery -A funkwhale_api.taskapp beat --pidfile= -l INFO
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
api:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications | get_docker_image(application_id,'api') }}"
|
||||
volumes:
|
||||
- "music:{{funkwhale_music_directory_path}}:ro"
|
||||
@ -39,11 +35,11 @@ services:
|
||||
- "funkwhale_static_root:{{funkwhale_static_root}}"
|
||||
ports:
|
||||
- "{{ funkwhale_docker_api_port }}"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
front:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications | get_docker_image(application_id,'front') }}"
|
||||
depends_on:
|
||||
- api
|
||||
@ -56,7 +52,7 @@ services:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
|
||||
typesense:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications[application_id].docker.images.typesense }}"
|
||||
volumes:
|
||||
- ./typesense/data:/data
|
||||
|
@ -7,6 +7,11 @@ docker:
|
||||
api: "funkwhale/api"
|
||||
front: "funkwhale/front"
|
||||
typesense: "typesense/typesense"
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
||||
features:
|
||||
matomo: true
|
||||
css: false
|
||||
|
@ -1,20 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
|
||||
application:
|
||||
container_name: {{ application_id }}
|
||||
image: ghcr.io/ldapaccountmanager/lam:{{applications[application_id].version}}
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:80
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{# include 'templates/docker/compose/volumes.yml.j2' #}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
fusiondirectory:
|
||||
image: tiredofit/fusiondirectory:latest
|
||||
container_name: fusiondirectory
|
||||
@ -39,5 +23,7 @@ services:
|
||||
- fusiondirectory_data:/assets/fusiondirectory
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
fusiondirectory_data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -1,26 +1,18 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications[application_id].images.gitea }}"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:3000"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
- "{{ports.public.ssh[application_id]}}:22"
|
||||
volumes:
|
||||
- data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -36,4 +36,8 @@ csp:
|
||||
- "data:"
|
||||
domains:
|
||||
aliases:
|
||||
- "git.{{ primary_domain }}"
|
||||
- "git.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,4 +1,5 @@
|
||||
application_id: "gitea"
|
||||
container_port: 3000
|
||||
database_type: "mariadb"
|
||||
gitea_ldap_auth_args:
|
||||
- '--name "LDAP ({{ primary_domain }})"'
|
||||
|
@ -1,13 +1,9 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
web:
|
||||
image: "{{ applications[application_id].images.gitlab }}"
|
||||
hostname: '{{domains | get_domain(application_id)}}'
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
- "{{ports.public.ssh[application_id]}}:22"
|
||||
@ -16,13 +12,13 @@ services:
|
||||
- 'logs:/var/log/gitlab'
|
||||
- 'data:/var/opt/gitlab'
|
||||
shm_size: '256m'
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
redis:
|
||||
config:
|
||||
logs:
|
||||
data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -4,4 +4,10 @@ features:
|
||||
matomo: true
|
||||
css: true
|
||||
portfolio_iframe: true
|
||||
central_database: true
|
||||
central_database: true
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,16 +1,13 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
image: "{{ applications[application_id].images.joomla }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- data:/var/www/html
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -4,6 +4,11 @@ features:
|
||||
matomo: true
|
||||
css: true
|
||||
portfolio_iframe: true
|
||||
central_database: true
|
||||
domains:
|
||||
canonical:
|
||||
- "cms.{{ primary_domain }}"
|
||||
- "cms.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,22 +1,18 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
image: "{{ applications[application_id].images.keycloak }}"
|
||||
container_name: {{container_name}}
|
||||
command: start {% if applications[application_id].import_realm | bool %}--import-realm{% endif %}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "{{ keycloak_server_host }}:8080"
|
||||
volumes:
|
||||
- "{{import_directory_host}}:{{import_directory_docker}}"
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "exec 3<>/dev/tcp/localhost/9000 && echo -e 'GET /health/live HTTP/1.1\\r\\nHost: {{domains | get_domain('keycloak')}}\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% set container_port = 9000 %}
|
||||
{% set container_healthcheck = 'health/live' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -25,3 +25,7 @@ scopes:
|
||||
nextcloud: nextcloud
|
||||
|
||||
rbac_groups: "/rbac"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,15 +1,11 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
container_name: {{ application_id }}
|
||||
image: "{{ applications[application_id].images.lam }}"
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:80
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{# include 'templates/docker/compose/volumes.yml.j2' #}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -1,11 +1,9 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
image: "{{ applications[application_id].images.openldap }}"
|
||||
container_name: {{ applications[application_id].hostname }}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% if applications[application_id].network.public | bool or applications[application_id].network.local | bool %}
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.ldap.ldap}}:{{ldap_docker_port}} # Expose just on localhost so that nginx stream proxy can use it
|
||||
@ -27,4 +25,4 @@ services:
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -3,7 +3,7 @@
|
||||
# of localhost will only listen to connections from the current machine. To
|
||||
# listen on all interfaces use '0.0.0.0'. To listen on the default web address
|
||||
# port, use port 80 (this will require running with elevated permissions).
|
||||
address = "0.0.0.0:9000"
|
||||
address = "0.0.0.0:{{ container_port }}"
|
||||
|
||||
# Database.
|
||||
[db]
|
||||
|
@ -1,18 +1,15 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% set container_healthcheck = 'health' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications[application_id].images.listmonk }}"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:9000"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
volumes:
|
||||
- {{docker_compose.directories.config}}config.toml:/listmonk/config.toml
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:9000/health || exit 1']
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes-just-database.yml.j2' %}
|
||||
|
||||
|
@ -10,4 +10,8 @@ features:
|
||||
oidc: true
|
||||
domains:
|
||||
canonical:
|
||||
- "newsletter.{{ primary_domain }}"
|
||||
- "newsletter.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,5 +1,6 @@
|
||||
application_id: "listmonk"
|
||||
database_type: "postgres"
|
||||
application_id: "listmonk"
|
||||
database_type: "postgres"
|
||||
container_port: "9000"
|
||||
|
||||
listmonk_settings:
|
||||
- key: "app.root_url"
|
||||
|
@ -1,19 +1,15 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
# Core services
|
||||
resolver:
|
||||
image: {{docker_source}}/unbound:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
ipv4_address: {{networks.local.mailu.dns}}
|
||||
|
||||
front:
|
||||
image: {{docker_source}}/nginx:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
- "{{networks.internet.ip4}}:25:25"
|
||||
@ -27,7 +23,7 @@ services:
|
||||
volumes:
|
||||
- "{{docker_compose.directories.volumes}}overrides/nginx:/overrides:ro"
|
||||
- "{{cert_mount_directory}}:/certs:ro"
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
resolver:
|
||||
condition: service_started
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
@ -38,11 +34,11 @@ services:
|
||||
|
||||
admin:
|
||||
image: {{docker_source}}/admin:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "admin_data:/data"
|
||||
- "dkim:/dkim"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
resolver:
|
||||
condition: service_started
|
||||
front:
|
||||
@ -53,7 +49,7 @@ services:
|
||||
|
||||
imap:
|
||||
image: {{docker_source}}/dovecot:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "dovecot_mail:/mail"
|
||||
- "{{docker_compose.directories.volumes}}overrides:/overrides:ro"
|
||||
@ -66,7 +62,7 @@ services:
|
||||
|
||||
smtp:
|
||||
image: {{docker_source}}/postfix:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "{{docker_compose.directories.volumes}}overrides:/overrides:ro"
|
||||
- "smtp_queue:/queue"
|
||||
@ -90,7 +86,7 @@ services:
|
||||
|
||||
antispam:
|
||||
image: {{docker_source}}/rspamd:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "filter:/var/lib/rspamd"
|
||||
- "dkim:/dkim"
|
||||
@ -109,7 +105,7 @@ services:
|
||||
# Optional services
|
||||
antivirus:
|
||||
image: clamav/clamav-debian:latest
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "filter:/data"
|
||||
depends_on:
|
||||
@ -120,7 +116,7 @@ services:
|
||||
|
||||
webdav:
|
||||
image: {{docker_source}}/radicale:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "webdav_data:/data"
|
||||
depends_on:
|
||||
@ -134,7 +130,7 @@ services:
|
||||
image: {{docker_source}}/fetchmail:{{applications.mailu.version}}
|
||||
volumes:
|
||||
- "admin_data:/data"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
depends_on:
|
||||
- admin
|
||||
- smtp
|
||||
@ -146,7 +142,7 @@ services:
|
||||
|
||||
webmail:
|
||||
image: {{docker_source}}/webmail:{{applications.mailu.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "webmail_data:/data"
|
||||
- "{{docker_compose.directories.volumes}}overrides:/overrides:ro"
|
||||
|
@ -26,4 +26,9 @@ rbac:
|
||||
roles:
|
||||
mail-bot:
|
||||
description: "Has an token to send and recieve emails"
|
||||
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,38 +1,36 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
web:
|
||||
{% set container_port = 3000 %}
|
||||
{% set container_healthcheck = 'health' %}
|
||||
image: "{{ applications[application_id].images[application_id] }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1']
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p {{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:3000"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
volumes:
|
||||
- data:/mastodon/public/system
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
streaming:
|
||||
{% set container_port = 4000 %}
|
||||
{% set container_healthcheck = 'api/v1/streaming/health' %}
|
||||
image: "{{ applications[application_id].images.streaming }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: node ./streaming
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1']
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.websocket[application_id]}}:4000"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
- "127.0.0.1:{{ports.localhost.websocket[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
sidekiq:
|
||||
image: "{{ applications[application_id].images.mastodon }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: bundle exec sidekiq
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
volumes:
|
||||
- data:/mastodon/public/system
|
||||
healthcheck:
|
||||
|
@ -16,4 +16,10 @@ domains:
|
||||
csp:
|
||||
whitelist:
|
||||
frame-src:
|
||||
- "*"
|
||||
- "*"
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,22 +1,15 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% set container_port = 80 %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: "{{ applications[application_id].images[application_id] }}"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
volumes:
|
||||
- data:/var/www/html
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/80 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
||||
|
@ -24,4 +24,9 @@ csp:
|
||||
domains:
|
||||
aliases:
|
||||
- "analytics.{{ primary_domain }}"
|
||||
excluded_ips: "{{ networks.internet.values() | list }}"
|
||||
excluded_ips: "{{ networks.internet.values() | list }}"
|
||||
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,8 +1,6 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
synapse:
|
||||
{% set container_port = 8008 %}
|
||||
image: "{{ applications[application_id].images.synapse }}"
|
||||
container_name: matrix-synapse
|
||||
restart: {{docker_restart_policy}}
|
||||
@ -19,35 +17,27 @@ services:
|
||||
- SYNAPSE_SERVER_NAME={{domains.matrix.synapse}}
|
||||
- SYNAPSE_REPORT_STATS=no
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http.synapse}}:8008"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8008/"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
- "127.0.0.1:{{ports.localhost.http.synapse}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
{% if bridges | length > 0 %}
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% for item in bridges %}
|
||||
mautrix-{{item.bridge_name}}:
|
||||
condition: service_healthy
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% endif %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
element:
|
||||
{% set container_port = 80 %}
|
||||
image: "{{ applications[application_id].images.element }}"
|
||||
container_name: matrix-element
|
||||
restart: {{docker_restart_policy}}
|
||||
volumes:
|
||||
- ./element-config.json:/app/config.json
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http.element}}:80"
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
- "127.0.0.1:{{ports.localhost.http.element}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% for item in bridges %}
|
||||
|
@ -1,3 +1,7 @@
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
images:
|
||||
synapse: "matrixdotorg/synapse:latest"
|
||||
element: "vectorim/element-web:latest"
|
||||
|
@ -1,18 +1,16 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
application:
|
||||
# Seems like image tag got lost. @todo Check and implement if necessary
|
||||
log_driver: journald
|
||||
restart: "{{docker_restart_policy}}"
|
||||
depends_on:
|
||||
- database
|
||||
volumes:
|
||||
- "mediawiki-data:/var/www/html/"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
# Seems like image tag got lost. @todo Check and implement if necessary
|
||||
log_driver: journald
|
||||
restart: "{{docker_restart_policy}}"
|
||||
depends_on:
|
||||
- database
|
||||
volumes:
|
||||
- "mediawiki-data:/var/www/html/"
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
|
@ -1,21 +1,14 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
image: "{{ applications[application_id].images[application_id] }}"
|
||||
volumes:
|
||||
- uploads:/var/lib/mobilizon/uploads
|
||||
- {{ mobilizon_host_conf_exs_file }}:/etc/mobilizon/config.exs:ro
|
||||
ports:
|
||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ mobilizon_exposed_docker_port }}"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:{{ mobilizon_exposed_docker_port }}"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
|
@ -15,7 +15,7 @@ MOBILIZON_INSTANCE_HOST={{ domains | get_domain(application_id) }}
|
||||
# MOBILIZON_INSTANCE_LISTEN_IP
|
||||
|
||||
# The port to listen on (defaults to 4000). Point your reverse proxy on this port.
|
||||
MOBILIZON_INSTANCE_PORT={{ mobilizon_exposed_docker_port }}
|
||||
MOBILIZON_INSTANCE_PORT={{ container_port }}
|
||||
|
||||
# Whether registrations are opened or closed. Can be changed in the admin settings UI as well.
|
||||
# Make sure to moderate actively your instance if registrations are opened.
|
||||
|
@ -15,4 +15,8 @@ domains:
|
||||
canonical:
|
||||
- "event.{{ primary_domain }}"
|
||||
aliases:
|
||||
- "events.{{ primary_domain }}"
|
||||
- "events.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -4,5 +4,5 @@ database_type: "postgres"
|
||||
database_gis_enabled: true
|
||||
|
||||
mobilizon_oidc_callback_url: "{{ domains | get_url(application_id, web_protocol) }}/auth/openid_connect/callback"
|
||||
mobilizon_exposed_docker_port: 4000
|
||||
container_port: 4000
|
||||
mobilizon_host_conf_exs_file: "{{docker_compose.directories.config}}config.exs"
|
@ -1,24 +1,20 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
moodle:
|
||||
{% set container_port = 8008 %}
|
||||
container_name: {{ container_name }}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: moodle_custom
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:8080
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- 'code:{{ bitnami_code_link }}'
|
||||
- 'data:{{ bitnami_data_dir }}'
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/8080 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
|
@ -24,4 +24,8 @@ csp:
|
||||
- "https://cdn.jsdelivr.net"
|
||||
domains:
|
||||
canonical:
|
||||
- "academy.{{ primary_domain }}"
|
||||
- "academy.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,7 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
logging:
|
||||
driver: journald
|
||||
@ -11,7 +8,7 @@ services:
|
||||
restart: {{docker_restart_policy}}
|
||||
volumes:
|
||||
- data:/var/www/html
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
server:
|
||||
|
@ -3,5 +3,10 @@ version: "latest"
|
||||
features:
|
||||
matomo: true
|
||||
css: true
|
||||
portfolio_iframe: false
|
||||
central_database: true
|
||||
portfolio_iframe: true
|
||||
central_database: true
|
||||
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,8 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
image: "nextcloud:{{applications.nextcloud.version}}-fpm-alpine"
|
||||
@ -15,8 +11,8 @@ services:
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
ipv4_address: 192.168.102.69
|
||||
|
||||
@ -49,16 +45,13 @@ services:
|
||||
driver: journald
|
||||
restart: {{docker_restart_policy}}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
volumes:
|
||||
- "{{docker_compose.directories.volumes}}nginx.conf:/etc/nginx/nginx.conf:ro"
|
||||
volumes_from:
|
||||
- application
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:80/"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 192.168.102.67
|
||||
@ -77,7 +70,7 @@ services:
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
ipv4_address: 192.168.102.70
|
||||
|
||||
|
@ -11,7 +11,12 @@ csp:
|
||||
domains:
|
||||
canonical:
|
||||
- "cloud.{{ primary_domain }}"
|
||||
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
||||
oidc:
|
||||
enabled: "{{ applications.nextcloud.features.oidc | default(true) }}" # Activate OIDC for Nextcloud
|
||||
# floavor decides which OICD plugin should be used.
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
# General
|
||||
application_id: "nextcloud" # Application identifier
|
||||
container_port: 80
|
||||
|
||||
# Database
|
||||
database_password: "{{applications.nextcloud.credentials.database_password}}" # Database password
|
||||
|
@ -7,18 +7,15 @@ x-op-app: &app
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
|
||||
services:
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
cache:
|
||||
image: memcached
|
||||
container_name: openproject-memcached
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
proxy:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: {{custom_openproject_image}}
|
||||
container_name: openproject-proxy
|
||||
command: "./docker/prod/proxy"
|
||||
@ -34,32 +31,29 @@ services:
|
||||
|
||||
web:
|
||||
<<: *app
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: "./docker/prod/web"
|
||||
container_name: openproject-web
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
cache:
|
||||
condition: service_started
|
||||
seeder:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health_checks/default"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
{% set container_port = 8080 %}
|
||||
{% set container_healthcheck = 'health_checks/default' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
volumes:
|
||||
- "data:/var/openproject/assets"
|
||||
- "{{dummy_volume}}:/var/openproject/pgdata" # This mount is unnecessary and just done to prevent anonymous volumes
|
||||
|
||||
worker:
|
||||
<<: *app
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: "./docker/prod/worker"
|
||||
container_name: openproject-worker
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
cache:
|
||||
condition: service_started
|
||||
seeder:
|
||||
@ -71,11 +65,11 @@ services:
|
||||
|
||||
cron:
|
||||
<<: *app
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
command: "./docker/prod/cron"
|
||||
container_name: openproject-cron
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
cache:
|
||||
condition: service_started
|
||||
seeder:
|
||||
@ -98,7 +92,7 @@ services:
|
||||
- "data:/var/openproject/assets"
|
||||
- "{{dummy_volume}}:/var/openproject/pgdata" # This mount is unnecessary and just done to prevent anonymous volumes
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
data:
|
||||
data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -26,4 +26,9 @@ csp:
|
||||
unsafe-inline: true
|
||||
domains:
|
||||
canonical:
|
||||
- "project.{{ primary_domain }}"
|
||||
- "project.{{ primary_domain }}"
|
||||
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -2,7 +2,7 @@ application_id: "openproject"
|
||||
docker_repository_address: "https://github.com/opf/openproject-deploy"
|
||||
database_type: "postgres"
|
||||
docker_repository: true
|
||||
|
||||
|
||||
openproject_plugins_folder: "{{docker_compose.directories.volumes}}plugins/"
|
||||
|
||||
custom_openproject_image: "custom_openproject"
|
||||
|
@ -1,29 +1,22 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% set container_port = 9000 %}
|
||||
image: chocobozzz/peertube:production-{{ applications[application_id].version }}
|
||||
container_name: {{ container_name }}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "1935:1935" # @todo Add to ports
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:9000"
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
volumes:
|
||||
- assets:/app/client/dist
|
||||
- data:/data
|
||||
- config:/config
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
# This just tests if the service is running on port 9000. It doesn't check if there is an 200 or e.g. an 404 response
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/9000 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
assets:
|
||||
data:
|
||||
|
@ -24,4 +24,10 @@ domains:
|
||||
canonical:
|
||||
- "video.{{ primary_domain }}"
|
||||
aliases:
|
||||
- "videos.{{ primary_domain }}"
|
||||
- "videos.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,20 +1,15 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% set container_port = 80 %}
|
||||
image: dpage/pgadmin4:{{applications[application_id].version}}
|
||||
container_name: pgadmin
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||
volumes:
|
||||
- "data:/var/lib/pgadmin"
|
||||
{% if applications[application_id].server_mode | bool %}
|
||||
|
@ -18,4 +18,8 @@ csp:
|
||||
unsafe-inline: true
|
||||
whitelist:
|
||||
font-src:
|
||||
- "data:"
|
||||
- "data:"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,13 +1,11 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
container_name: {{ application_id }}
|
||||
image: leenooks/phpldapadmin:{{applications[application_id].version}}
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:8080
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
|
@ -1,19 +1,14 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% set container_port = 80 %}
|
||||
image: phpmyadmin/phpmyadmin:{{applications.phpmyadmin.version}}
|
||||
container_name: phpmyadmin
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/80 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -20,3 +20,7 @@ domains:
|
||||
aliases:
|
||||
- "mysql.{{ primary_domain }}"
|
||||
- "mariadb.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
|
@ -1,22 +1,18 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
image: "{{ applications[application_id].images.pixelfed }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "data:/var/www/storage"
|
||||
- "./env:/var/www/.env"
|
||||
ports:
|
||||
- "{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
worker:
|
||||
image: "{{ applications[application_id].images.pixelfed }}"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- "data:/var/www/storage"
|
||||
- "./env:/var/www/.env"
|
||||
@ -26,7 +22,7 @@ services:
|
||||
interval: 60s
|
||||
timeout: 5s
|
||||
retries: 1
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
application:
|
||||
condition: service_started
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
@ -22,4 +22,10 @@ domains:
|
||||
canonical:
|
||||
- "picture.{{ primary_domain }}"
|
||||
aliases:
|
||||
- "pictures.{{ primary_domain }}"
|
||||
- "pictures.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,19 +1,17 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
portfolio:
|
||||
{% set container_port = 5000 %}
|
||||
build:
|
||||
context: {{docker_repository_path}}
|
||||
dockerfile: Dockerfile
|
||||
image: application-portfolio
|
||||
container_name: portfolio
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:5000
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}
|
||||
volumes:
|
||||
- {{docker_repository_path}}app:/app
|
||||
restart: unless-stopped
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/5000 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -1,4 +1,4 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
cymais-presentation:
|
||||
build:
|
||||
context: {{ path_cymais_presentation_output.stdout }}
|
||||
@ -8,7 +8,7 @@ services:
|
||||
volumes:
|
||||
- {{ path_cymais_presentation_output.stdout }}:/app
|
||||
- {{ path_cymais_output.stdout }}:/source
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -1,8 +1,10 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
container_name: roulette_application
|
||||
build:
|
||||
context: .
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:8080
|
||||
restart: {{docker_restart_policy}}
|
||||
restart: {{docker_restart_policy}}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -1,4 +1,4 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
build:
|
||||
context: .
|
||||
@ -7,7 +7,7 @@ services:
|
||||
container_name: simpleicons-server
|
||||
ports:
|
||||
- "{{ports.localhost.http[application_id]}}:3000"
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -1,28 +1,18 @@
|
||||
services:
|
||||
|
||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% set container_port = 80 %}
|
||||
image: grokability/snipe-it:{{applications[application_id].version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
volumes:
|
||||
- data:/var/lib/snipeit
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/80 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
{% include 'roles/docker-container/templates/healthcheck/tcp.yml.j2' %}
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
redis:
|
||||
data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -26,4 +26,10 @@ oauth2_proxy:
|
||||
port: "80"
|
||||
acl:
|
||||
blacklist:
|
||||
- "/login"
|
||||
- "/login"
|
||||
docker:
|
||||
services:
|
||||
redis:
|
||||
enabled: true
|
||||
database:
|
||||
enabled: true
|
@ -1,16 +1,13 @@
|
||||
services:
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
{% set container_port = 8008 %}
|
||||
build:
|
||||
context: {{ path_cymais_sphinx_output.stdout }}
|
||||
dockerfile: {{ path_cymais_sphinx_output.stdout }}/Dockerfile
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:8000"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -1,7 +1,4 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
depends_on:
|
||||
- db
|
||||
@ -9,7 +6,7 @@ services:
|
||||
ports:
|
||||
- "18080:8080"
|
||||
restart: always
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: docker,postgresql,saml2
|
||||
OPENJPA_REMOTE_COMMIT: sjvm
|
||||
@ -37,4 +34,5 @@ services:
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: docker,saml2
|
||||
SERVICE_DISCOVERY_ADDRESS: {{ domains | get_url(application_id, web_protocol) }}/{{syncope_paths[enduser]}}/
|
||||
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
@ -3,7 +3,7 @@ services:
|
||||
image: taigaio/taiga-back:latest
|
||||
environment:
|
||||
CELERY_ENABLED: "False"
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
entrypoint: "python manage.py"
|
||||
volumes:
|
||||
|
@ -1,7 +1,7 @@
|
||||
services:
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
taiga-back:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: {{taiga_image_backend}}:{{applications.taiga.version}}
|
||||
volumes:
|
||||
# These volumens will be used by taiga-back and taiga-async.
|
||||
@ -17,7 +17,7 @@ services:
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
taiga-events-rabbitmq:
|
||||
condition: service_started
|
||||
taiga-async-rabbitmq:
|
||||
@ -33,7 +33,7 @@ services:
|
||||
|
||||
|
||||
taiga-async:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: {{taiga_image_backend}}:{{applications.taiga.version}}
|
||||
entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]
|
||||
volumes:
|
||||
@ -52,7 +52,7 @@ services:
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
taiga-events-rabbitmq:
|
||||
condition: service_started
|
||||
taiga-async-rabbitmq:
|
||||
@ -71,13 +71,13 @@ services:
|
||||
hostname: "taiga-async-rabbitmq"
|
||||
volumes:
|
||||
- async-rabbitmq-data:/var/lib/rabbitmq
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
|
||||
taiga-front:
|
||||
image: {{taiga_image_frontend}}:{{applications.taiga.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
# volumes:
|
||||
@ -85,7 +85,7 @@ services:
|
||||
|
||||
taiga-events:
|
||||
image: taigaio/taiga-events:latest
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
depends_on:
|
||||
@ -97,14 +97,14 @@ services:
|
||||
hostname: "events-rabbitmq"
|
||||
volumes:
|
||||
- events-rabbitmq-data:/var/lib/rabbitmq
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
|
||||
taiga-protected:
|
||||
image: taigaio/taiga-protected:latest
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
@ -117,7 +117,7 @@ services:
|
||||
- {{docker_repository_path}}taiga-gateway/taiga.conf:/etc/nginx/conf.d/default.conf
|
||||
- static-data:/taiga/static
|
||||
- media-data:/taiga/media
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
taiga:
|
||||
@ -133,4 +133,4 @@ services:
|
||||
events-rabbitmq-data:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
taiga:
|
||||
taiga:
|
@ -12,7 +12,10 @@ features:
|
||||
portfolio_iframe: false
|
||||
oidc: false
|
||||
central_database: true
|
||||
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
csp:
|
||||
flags:
|
||||
script-src-elem:
|
||||
@ -21,7 +24,7 @@ csp:
|
||||
style-src:
|
||||
unsafe-inline: true
|
||||
script-src:
|
||||
unsafe-eval: true
|
||||
unsafe-eval: true
|
||||
domains:
|
||||
canonical:
|
||||
- "kanban.{{ primary_domain }}"
|
@ -1,9 +1,6 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
application:
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
image: {{wordpress_custom_image}}
|
||||
container_name: wordpress-application
|
||||
build:
|
||||
@ -13,9 +10,8 @@ services:
|
||||
volumes:
|
||||
- data:{{ wordpress_docker_html_path }}
|
||||
|
||||
{% include 'roles/docker-compose/templates/services/msmtp_curl_test.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/healthcheck/msmtp_curl.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -39,6 +39,10 @@ csp:
|
||||
domains:
|
||||
canonical:
|
||||
- "blog.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
||||
rbac:
|
||||
roles:
|
||||
subscriber:
|
||||
|
@ -1,22 +1,17 @@
|
||||
services:
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
|
||||
|
||||
{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}
|
||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||
|
||||
application:
|
||||
{% set container_port = 80 %}
|
||||
{% set container_healthcheck = 'http://127.0.0.1/admin/' %}
|
||||
image: yourls:{{applications.yourls.version}}
|
||||
{% include 'roles/docker-compose/templates/services/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
ports:
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:80"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1/admin/"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes-just-database.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
@ -17,4 +17,8 @@ domains:
|
||||
canonical:
|
||||
- "s.{{ primary_domain }}"
|
||||
aliases:
|
||||
- "short.{{ primary_domain }}"
|
||||
- "short.{{ primary_domain }}"
|
||||
docker:
|
||||
services:
|
||||
database:
|
||||
enabled: true
|
@ -1,7 +0,0 @@
|
||||
{# This template needs to be included in docker-compose.yml containers which depend on a database and additional containers #}
|
||||
depends_on:
|
||||
{% if not applications | is_feature_enabled('central_database',application_id) %}
|
||||
database:
|
||||
condition: service_healthy
|
||||
{% endif %}
|
||||
{{ "\n" }}
|
@ -1,9 +0,0 @@
|
||||
{# This template needs to be included in docker-compose.yml containers, which depend on a database, redis and optional additional volumes #}
|
||||
depends_on:
|
||||
{% if not applications | is_feature_enabled('central_database',application_id) %}
|
||||
database:
|
||||
condition: service_healthy
|
||||
{% endif %}
|
||||
redis:
|
||||
condition: service_healthy
|
||||
{{ "\n" }}
|
@ -1,7 +0,0 @@
|
||||
{# This template needs to be included in docker-compose.yml containers, which just depend on a database #}
|
||||
{% if not applications | is_feature_enabled('central_database',application_id) %}
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
{% endif %}
|
||||
{{ "\n" }}
|
@ -1,19 +1,21 @@
|
||||
services:
|
||||
portfolio:
|
||||
build:
|
||||
context: {{docker_repository_path}}
|
||||
dockerfile: Dockerfile
|
||||
image: application-portfolio
|
||||
container_name: portfolio
|
||||
ports:
|
||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:5000
|
||||
|
||||
{% include 'roles/docker-central-database/templates/services/main.yml.j2' %}
|
||||
|
||||
application:
|
||||
image: "{{ applications[application_id].images[application_id] }}"
|
||||
volumes:
|
||||
- {{docker_repository_path}}app:/app
|
||||
restart: unless-stopped
|
||||
- uploads:/var/lib/mobilizon/uploads
|
||||
- {{ mobilizon_host_conf_exs_file }}:/etc/mobilizon/config.exs:ro
|
||||
ports:
|
||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||
{% include 'roles/docker-container/templates/depends_on_dmbs.j2' %}
|
||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/5000 && echo -e 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q 'HTTP/1.1'"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
||||
uploads:
|
||||
|
||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
||||
|
||||
|
@ -1,7 +1,10 @@
|
||||
credentials:
|
||||
docker:
|
||||
images: {}
|
||||
versions: {}
|
||||
images: {} # @todo Move under services
|
||||
versions: {} # @todo Move under services
|
||||
services:
|
||||
redis:
|
||||
enabled: false # Enable Redis
|
||||
features:
|
||||
matomo: true # Enable Matomo Tracking
|
||||
css: true # Enable Global CSS Styling
|
||||
@ -16,4 +19,8 @@ csp:
|
||||
domains:
|
||||
canonical: [] # Urls under which the domain should be directly accessible
|
||||
alias: [] # Alias redirections to the first element of the canonical domains
|
||||
rbac:
|
||||
roles:
|
||||
mail-bot:
|
||||
description: "Has an token to send and recieve emails"
|
||||
|
||||
|
@ -11,7 +11,7 @@ class TestApplicationIdConsistency(unittest.TestCase):
|
||||
failed_roles = []
|
||||
|
||||
for role_path in ROLES_DIR.iterdir():
|
||||
if role_path.name in ["docker-compose", "docker-central-database", "docker-repository-setup"]:
|
||||
if role_path.name in ["docker-container","docker-compose", "docker-central-database", "docker-repository-setup"]:
|
||||
continue
|
||||
|
||||
if role_path.is_dir() and role_path.name.startswith("docker-"):
|
||||
|
43
tests/integration/test_configuration_database_dependency.py
Normal file
43
tests/integration/test_configuration_database_dependency.py
Normal file
@ -0,0 +1,43 @@
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
|
||||
class TestConfigurationDatabaseDependency(unittest.TestCase):
|
||||
# Define project root and glob pattern for configuration files
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
||||
CONFIG_PATTERN = 'roles/*/vars/configuration.yml'
|
||||
|
||||
def test_central_database_implies_database_service_enabled(self):
|
||||
"""
|
||||
For each roles/*/vars/configuration.yml:
|
||||
If features.central_database is true,
|
||||
then docker.services.database.enabled must be true.
|
||||
"""
|
||||
config_paths = sorted(self.PROJECT_ROOT.glob(self.CONFIG_PATTERN))
|
||||
self.assertTrue(config_paths, f"No configuration files found for pattern {self.CONFIG_PATTERN}")
|
||||
|
||||
for config_path in config_paths:
|
||||
with self.subTest(configuration=config_path):
|
||||
content = yaml.safe_load(config_path.read_text(encoding='utf-8')) or {}
|
||||
|
||||
# Read central_database flag
|
||||
features = content.get('features', {})
|
||||
central_db = features.get('central_database', False)
|
||||
|
||||
# Read database enabled flag
|
||||
docker = content.get('docker', {})
|
||||
services = docker.get('services', {})
|
||||
database = services.get('database', {})
|
||||
db_enabled = database.get('enabled', False)
|
||||
|
||||
if central_db:
|
||||
self.assertTrue(
|
||||
db_enabled,
|
||||
f"{config_path}: features.central_database is true but docker.services.database.enabled is not true"
|
||||
)
|
||||
else:
|
||||
# No requirement when central_database is false or absent
|
||||
self.assertTrue(True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user