Compare commits

..

No commits in common. "d379d89ea379dc5515115be102eb36c87a2e7fa9" and "658e40098acfb8b9faf36fd03da8ef0275ac7a81" have entirely different histories.

48 changed files with 214 additions and 347 deletions

View File

@ -96,9 +96,6 @@ nginx_upstreams_directory: "{{nginx_configuration_directory}}upstreams/"
## Docker Applications ## Docker Applications
### Enable Central MariaDB
enable_central_database: true
### Domain Names for Various Services ### Domain Names for Various Services
domain_akaunting: "akaunting.{{top_domain}}" domain_akaunting: "akaunting.{{top_domain}}"
domain_baserow: "baserow.{{top_domain}}" domain_baserow: "baserow.{{top_domain}}"

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: Create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "include tasks update-repository-with-docker-compose.yml" - name: "include tasks update-repository-with-docker-compose.yml"
include_tasks: update-repository-with-docker-compose.yml include_tasks: update-repository-with-docker-compose.yml

View File

@ -14,15 +14,11 @@ services:
- env/run.env - env/run.env
environment: environment:
- AKAUNTING_SETUP - AKAUNTING_SETUP
{% if not ( enable_central_database | lower | bool ) %}
depends_on: depends_on:
- database - database
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
data: data:
{% if not ( enable_central_database | lower | bool ) %} database:
database:
{% endif %}

View File

@ -11,10 +11,5 @@
dest: "{{nginx_servers_directory}}{{domain}}.conf" dest: "{{nginx_servers_directory}}{{domain}}.conf"
notify: restart nginx notify: restart nginx
- name: Create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "include tasks update-repository-with-docker-compose.yml" - name: "include tasks update-repository-with-docker-compose.yml"
include_tasks: update-repository-with-docker-compose.yml include_tasks: update-repository-with-docker-compose.yml

View File

@ -9,9 +9,7 @@ services:
- .:/usr/share/nginx/html - .:/usr/share/nginx/html
- .:/var/www - .:/var/www
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- maildev - maildev
- redis - redis
- worker - worker
@ -20,15 +18,15 @@ services:
worker: worker:
image: attendize_worker:latest image: attendize_worker:latest
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- maildev - maildev
- redis - redis
volumes: volumes:
- .:/usr/share/nginx/html - .:/usr/share/nginx/html
- .:/var/www - .:/var/www
{% include 'templates/docker-mariadb-service.yml.j2' %}
maildev: maildev:
image: maildev/maildev image: maildev/maildev
ports: ports:
@ -36,15 +34,6 @@ services:
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
{% if not ( enable_central_database | lower | bool ) %}
depends_on:
- database
{% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
redis:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %} redis:

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: Create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -1,6 +1,14 @@
version: "3" version: "3"
services: services:
postgres:
restart: always
env_file: .env
environment:
- "POSTGRES_HOST_AUTH_METHOD=trust"
image: postgres:15-alpine
volumes:
- database:/var/lib/postgresql/data
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
@ -10,9 +18,7 @@ services:
restart: always restart: always
image: funkwhale/api:${FUNKWHALE_VERSION:-latest} image: funkwhale/api:${FUNKWHALE_VERSION:-latest}
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- postgres - postgres
% endif %}
- redis - redis
env_file: .env env_file: .env
command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY-0} command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=${CELERYD_CONCURRENCY-0}
@ -25,9 +31,7 @@ services:
restart: always restart: always
image: funkwhale/api:${FUNKWHALE_VERSION:-latest} image: funkwhale/api:${FUNKWHALE_VERSION:-latest}
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- postgres - postgres
% endif %}
- redis - redis
env_file: .env env_file: .env
command: celery -A funkwhale_api.taskapp beat --pidfile= -l INFO command: celery -A funkwhale_api.taskapp beat --pidfile= -l INFO
@ -61,15 +65,7 @@ services:
ports: ports:
# override those variables in your .env file if needed # override those variables in your .env file if needed
- "${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}:80" - "${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}:80"
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-postgres-service.yml.j2' %}
{% endif %}
volumes: volumes:
data: data:
redis: redis:
database:
{% if not ( enable_central_database | lower | bool ) %}
database:
{% endif %}

View File

@ -1,7 +1,3 @@
docker_compose_project_name: "funkwhale" docker_compose_project_name: "funkwhale"
docker_compose_instance_directory: "{{path_docker_compose_instances}}{{docker_compose_project_name}}/" docker_compose_instance_directory: "{{path_docker_compose_instances}}{{docker_compose_project_name}}/"
nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size 512M;" nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size 512M;"
database_databasename: "{{docker_compose_project_name}}"
database_username: "{{docker_compose_project_name}}"
database_password: "{{funkwhale_database_password}}"
database_version: "{{ funkwhale_database_version | default(postgres_default_version) }}"

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -23,24 +23,20 @@ services:
ports: ports:
- "127.0.0.1:{{http_port}}:3000" - "127.0.0.1:{{http_port}}:3000"
- "{{ssh_port}}:22" - "{{ssh_port}}:22"
links:
- database
volumes: volumes:
- data:/data - data:/data
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
{% if not ( enable_central_database | lower | bool ) %}
depends_on: depends_on:
- database - database
links:
- database
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
data:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %} data:
networks: networks:
default: default:
driver: bridge driver: bridge

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -33,23 +33,17 @@ services:
- 'data:/var/opt/gitlab' - 'data:/var/opt/gitlab'
shm_size: '256m' shm_size: '256m'
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
condition: service_healthy condition: service_healthy
{% endif %}
redis: redis:
{% include 'templates/docker-postgres-service.yml.j2' %}
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-postgres-service.yml.j2' %}
{% endif %}
volumes: volumes:
redis: database:
config: config:
logs: logs:
data: data:
{% if not ( enable_central_database | lower | bool ) %} redis:
database:
{% endif %}

View File

@ -1 +0,0 @@
This role is deprecated. Needs to be reimplemented.

View File

@ -5,11 +5,6 @@
loop_control: loop_control:
loop_var: domain loop_var: domain
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -11,21 +11,15 @@ services:
JOOMLA_DB_PASSWORD: "{{database_password}}" JOOMLA_DB_PASSWORD: "{{database_password}}"
JOOMLA_DB_NAME: "{{database_databasename}}" JOOMLA_DB_NAME: "{{database_databasename}}"
restart: always restart: always
{% if not ( enable_central_database | lower | bool ) %}
links: links:
- database - database
{% endif %}
volumes: volumes:
- data:/var/www/html - data:/var/www/html
ports: ports:
- "127.0.0.1:{{http_port}}:80" - "127.0.0.1:{{http_port}}:80"
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
data:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %} data:

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -2,6 +2,8 @@ version: "3.7"
services: services:
{% include 'templates/docker-postgres-service.yml.j2' %}
application: application:
restart: unless-stopped restart: unless-stopped
image: listmonk/listmonk:latest image: listmonk/listmonk:latest
@ -9,15 +11,10 @@ services:
- "127.0.0.1:{{http_port}}:9000" - "127.0.0.1:{{http_port}}:9000"
environment: environment:
- TZ=Etc/UTC - TZ=Etc/UTC
depends_on:
- database
volumes: volumes:
- ./config.toml:/listmonk/config.toml - ./config.toml:/listmonk/config.toml
{% if not ( enable_central_database | lower | bool ) %}
depends_on:
- database
{% include 'templates/docker-postgres-service.yml.j2' %}
volumes: volumes:
database: database:
{% endif %}

View File

@ -28,11 +28,6 @@
state: directory state: directory
mode: 0755 mode: 0755
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" src: "docker-compose.yml.j2"

View File

@ -3,11 +3,15 @@ version: '2.2'
services: services:
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
env_file: mailu.env env_file: mailu.env
depends_on: depends_on:
- resolver - resolver
dns: dns:
- 192.168.203.254 - 192.168.203.254
{% include 'templates/docker-mariadb-service.yml.j2' %}
depends_on: depends_on:
- resolver - resolver
dns: dns:
@ -49,10 +53,8 @@ services:
depends_on: depends_on:
resolver: resolver:
condition: service_started condition: service_started
{% if not ( enable_central_database | lower | bool ) %}
database: database:
condition: service_healthy condition: service_healthy
{% endif %}
networks: networks:
- default - default
- webmail - webmail
@ -71,9 +73,7 @@ services:
- resolver - resolver
- front - front
- redis - redis
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
logging: logging:
driver: journald driver: journald
dns: dns:
@ -202,14 +202,9 @@ services:
- webmail - webmail
dns: dns:
- 192.168.203.254 - 192.168.203.254
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-postgres-service.yml.j2' %}
{% endif %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
smtp_queue: smtp_queue:
admin_data: admin_data:
webdav_data: webdav_data:

View File

@ -0,0 +1,21 @@
- name: create database
mysql_db:
name: "{{database_databasename}}"
state: present
login_user: root
login_password: "{{central_mariadb_root_password}}"
login_host: 127.0.0.1
login_port: 3306
listen: create database
- name: create database user
mysql_user:
name: "{{database_username}}"
password: "{{database_password}}"
priv: '{{database_databasename}}.*:ALL'
state: present
login_user: root
login_password: "{{central_mariadb_root_password}}"
login_host: 127.0.0.1
login_port: 3306
listen: create database

View File

@ -7,48 +7,16 @@
- name: install MariaDB - name: install MariaDB
docker_container: docker_container:
name: mariadb name: mariadb
image: mariadb:latest #could lead to problems with nextcloud image: mariadb:latest
detach: yes detach: yes
env: env:
MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}" MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}"
MARIADB_AUTO_UPGRADE: "1"
networks: networks:
- name: mariadb_network - name: mariadb_network
published_ports: published_ports:
- "127.0.0.1:3306:3306" - "127.0.0.1:3306:3306"
command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW" #for nextcloud
when: run_once_docker_mariadb is not defined when: run_once_docker_mariadb is not defined
- name: wait for availability of mariadb
wait_for:
host: "127.0.0.1"
port: "3306"
delay: 0
timeout: 120
when: run_once_docker_mariadb is not defined
- name: create database
mysql_db:
name: "{{database_databasename}}"
state: present
login_user: root
login_password: "{{central_mariadb_root_password}}"
login_host: 127.0.0.1
login_port: 3306
listen: create database
- name: create database user
mysql_user:
name: "{{database_username}}"
password: "{{database_password}}"
priv: '{{database_databasename}}.*:ALL'
state: present
login_user: root
login_password: "{{central_mariadb_root_password}}"
login_host: 127.0.0.1
login_port: 3306
listen: create database
- name: run the docker_mariadb tasks once - name: run the docker_mariadb tasks once
set_fact: set_fact:
run_once_docker_mariadb: true run_once_docker_mariadb: true

View File

@ -5,11 +5,6 @@
loop_control: loop_control:
loop_var: domain loop_var: domain
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -1,5 +1,19 @@
version: '3' version: '3'
services: services:
database:
restart: always
image: postgres:14-alpine
shm_size: 256mb
networks:
- internal_network
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres']
volumes:
- database:/var/lib/postgresql/data
environment:
- 'POSTGRES_HOST_AUTH_METHOD=trust'
logging:
driver: journald
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
@ -20,9 +34,7 @@ services:
ports: ports:
- "127.0.0.1:{{http_port}}:3000" - "127.0.0.1:{{http_port}}:3000"
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- redis - redis
volumes: volumes:
- data:/mastodon/public/system - data:/mastodon/public/system
@ -42,9 +54,7 @@ services:
ports: ports:
- "127.0.0.1:{{stream_port}}:4000" - "127.0.0.1:{{stream_port}}:4000"
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- redis - redis
logging: logging:
driver: journald driver: journald
@ -54,9 +64,7 @@ services:
env_file: .env.production env_file: .env.production
command: bundle exec sidekiq command: bundle exec sidekiq
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- redis - redis
networks: networks:
- external_network - external_network
@ -67,14 +75,8 @@ services:
test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"]
logging: logging:
driver: journald driver: journald
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-postgres-service.yml.j2' %}
{% endif %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
redis: redis:
data: data:
networks: networks:

View File

@ -1,7 +1,6 @@
docker_compose_project_name: "mastodon" docker_compose_project_name: "mastodon"
docker_compose_instance_directory: "{{path_docker_compose_instances}}{{docker_compose_project_name}}/" docker_compose_instance_directory: "{{path_docker_compose_instances}}{{docker_compose_project_name}}/"
database_host: "database" database_host: "database"
database_databasename: "{{docker_compose_project_name}}" database_databasename: "postgres" # todo: Change this to standart name scheme for future setups
database_username: "{{docker_compose_project_name}}" database_username: "postgres" # todo: Change this to standart name scheme for future setups
database_password: "{{mastodon_database_password}}" database_password: "" # todo: Change this to standart name scheme for future setups
database_version: "{{ mastodon_database_version | default(postgres_default_version) }}"

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -14,18 +14,17 @@ services:
MATOMO_DATABASE_USERNAME: "{{database_username}}" MATOMO_DATABASE_USERNAME: "{{database_username}}"
MATOMO_DATABASE_PASSWORD: "{{database_password}}" MATOMO_DATABASE_PASSWORD: "{{database_password}}"
MATOMO_DATABASE_DBNAME: "{{database_databasename}}" MATOMO_DATABASE_DBNAME: "{{database_databasename}}"
volumes: links:
- data:/var/www/html - database
{% if not ( enable_central_database | lower | bool ) %}
depends_on: depends_on:
- database - database
volumes:
- data:/var/www/html
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
data: data:
networks: networks:
default: default:

View File

@ -4,11 +4,6 @@
vars: vars:
domain: "{{synapse_domain}}" domain: "{{synapse_domain}}"
http_port: "{{synapse_http_port}}" http_port: "{{synapse_http_port}}"
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml

View File

@ -16,12 +16,25 @@ services:
- SYNAPSE_REPORT_STATS=no - SYNAPSE_REPORT_STATS=no
ports: ports:
- "127.0.0.1:{{synapse_http_port}}:8008" - "127.0.0.1:{{synapse_http_port}}:8008"
{% if not ( enable_central_database | lower | bool ) %}
depends_on: depends_on:
- database - database
{% include 'templates/docker-postgres-service.yml.j2' %} database:
{% endif %} logging:
driver: journald
image: postgres:16
restart: unless-stopped
volumes:
- database:/var/lib/postgresql/data
environment:
- POSTGRES_DB={{database_databasename}}
- POSTGRES_USER={{database_username}}
- POSTGRES_PASSWORD={{database_password}}
- POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C
healthcheck:
test: ["CMD-SHELL", "pg_isready -U {{database_username}}"]
interval: 10s
timeout: 5s
retries: 6
element: element:
image: vectorim/element-web:latest image: vectorim/element-web:latest
restart: unless-stopped restart: unless-stopped
@ -60,9 +73,7 @@ services:
# - instagram_bridge_data:/data # - instagram_bridge_data:/data
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
synapse_data: synapse_data:
#telegram_bridge_data: #telegram_bridge_data:
#whatsapp_bridge_data: #whatsapp_bridge_data:

View File

@ -5,11 +5,6 @@
loop_control: loop_control:
loop_var: domain loop_var: domain
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_confd_directory}} and parent directories" - name: "create {{docker_compose_instance_confd_directory}} and parent directories"
file: file:
path: "{{docker_compose_instance_confd_directory}}" path: "{{docker_compose_instance_confd_directory}}"

View File

@ -7,17 +7,17 @@ services:
tag: "mybb_application" tag: "mybb_application"
image: mybb/mybb:latest image: mybb/mybb:latest
restart: always restart: always
links:
- database
volumes: volumes:
- data:/var/www/html - data:/var/www/html
{% if not ( enable_central_database | lower | bool ) %}
depends_on:
- database
{% endif %}
server: server:
logging: logging:
driver: journald driver: journald
options: options:
tag: "mybb_server" tag: "mybb_server"
links:
- application
image: nginx:mainline image: nginx:mainline
restart: always restart: always
ports: ports:
@ -26,14 +26,10 @@ services:
- "{{docker_compose_instance_confd_directory}}:{{target_mount_conf_d_directory}}:ro" - "{{docker_compose_instance_confd_directory}}:{{target_mount_conf_d_directory}}:ro"
- "data:/var/www/html:ro" - "data:/var/www/html:ro"
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
data: data:
networks: networks:
default: default:

View File

@ -20,11 +20,6 @@
dest: "{{path_docker_volumes}}nextcloud/nginx.conf" dest: "{{path_docker_volumes}}nextcloud/nginx.conf"
notify: docker compose project setup notify: docker compose project setup
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -6,6 +6,8 @@ services:
restart: always restart: always
logging: logging:
driver: journald driver: journald
depends_on:
- database
volumes: volumes:
- data:/var/www/html - data:/var/www/html
environment: environment:
@ -13,13 +15,25 @@ services:
MYSQL_USER: "{{database_username}}" MYSQL_USER: "{{database_username}}"
MYSQL_PASSWORD: "{{database_password}}" MYSQL_PASSWORD: "{{database_password}}"
MYSQL_HOST: {{database_host}}:3306 MYSQL_HOST: {{database_host}}:3306
{% if not ( enable_central_database | lower | bool ) %} database:
depends_on: logging:
- database driver: journald
image: mariadb:10.5
{% include 'templates/docker-mariadb-service.yml.j2' %} command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW"
{% endif %} environment:
MYSQL_DATABASE: "{{database_databasename}}"
MYSQL_USER: "{{database_username}}"
MYSQL_PASSWORD: "{{database_password}}"
MYSQL_ROOT_PASSWORD: "{{database_password}}"
MARIADB_AUTO_UPGRADE: "1"
volumes:
- database:/var/lib/mysql
restart: always
healthcheck:
test: "/usr/bin/mariadb --user={{database_username}} --password={{database_password}} --execute \"SHOW DATABASES;\""
interval: 3s
timeout: 1s
retries: 5
web: web:
image: nginx:alpine image: nginx:alpine
logging: logging:
@ -45,14 +59,10 @@ services:
- data:/var/www/html - data:/var/www/html
entrypoint: /cron.sh entrypoint: /cron.sh
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- redis - redis
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
data: data:
redis: redis:
networks: networks:

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "include tasks update-repository-with-docker-compose.yml" - name: "include tasks update-repository-with-docker-compose.yml"
include_tasks: update-repository-with-docker-compose.yml include_tasks: update-repository-with-docker-compose.yml

View File

@ -5,10 +5,8 @@ networks:
backend: backend:
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %} pgdata:
database: opdata:
{% endif %}
data:
x-op-restart-policy: &restart_policy x-op-restart-policy: &restart_policy
restart: unless-stopped restart: unless-stopped
@ -17,8 +15,8 @@ x-op-image: &image
x-op-app: &app x-op-app: &app
<<: [*image, *restart_policy] <<: [*image, *restart_policy]
environment: environment:
OPENPROJECT_HTTPS: "${OPENPROJECT_HTTPS}" OPENPROJECT_HTTPS: "${OPENPROJECT_HTTPS:-true}"
OPENPROJECT_HOST__NAME: "${OPENPROJECT_HOST__NAME}" OPENPROJECT_HOST__NAME: "${OPENPROJECT_HOST__NAME:-localhost:8080}"
OPENPROJECT_HSTS: "${OPENPROJECT_HSTS:-true}" OPENPROJECT_HSTS: "${OPENPROJECT_HSTS:-true}"
RAILS_CACHE_STORE: "memcache" RAILS_CACHE_STORE: "memcache"
OPENPROJECT_CACHE__MEMCACHE__SERVER: "cache:11211" OPENPROJECT_CACHE__MEMCACHE__SERVER: "cache:11211"
@ -29,16 +27,19 @@ x-op-app: &app
# set to true to enable the email receiving feature. See ./docker/cron for more options # set to true to enable the email receiving feature. See ./docker/cron for more options
IMAP_ENABLED: "${IMAP_ENABLED:-false}" IMAP_ENABLED: "${IMAP_ENABLED:-false}"
volumes: volumes:
- "data:/var/openproject/assets" - "${OPDATA}:/var/openproject/assets"
{% if not ( enable_central_database | lower | bool ) %} - "${PGDATA}:/var/openproject/pgdata"
- "database:/var/openproject/pgdata"
{% endif %}
services: services:
database:
{% if not ( enable_central_database | lower | bool ) %} image: postgres:13
{% include 'templates/docker-postgres-service.yml.j2' %} <<: *restart_policy
{% endif %} stop_grace_period: "3s"
volumes:
- "${PGDATA}:/var/lib/postgresql/data"
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: openproject
networks: networks:
- backend - backend
@ -52,7 +53,7 @@ services:
<<: [*image, *restart_policy] <<: [*image, *restart_policy]
command: "./docker/prod/proxy" command: "./docker/prod/proxy"
ports: ports:
- "${PORT}:80" - "${PORT:-8080}:80"
environment: environment:
APP_HOST: web APP_HOST: web
OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}" OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}"
@ -61,11 +62,9 @@ services:
networks: networks:
- frontend - frontend
volumes: volumes:
- "data:/var/openproject/assets" - "${OPDATA}:/var/openproject/assets"
{% if not ( enable_central_database | lower | bool ) %} - "${PGDATA}:/var/openproject/pgdata"
- "database:/var/openproject/pgdata"
{% endif %}
web: web:
<<: *app <<: *app
command: "./docker/prod/web" command: "./docker/prod/web"
@ -73,9 +72,7 @@ services:
- frontend - frontend
- backend - backend
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- cache - cache
- seeder - seeder
labels: labels:
@ -102,9 +99,7 @@ services:
networks: networks:
- backend - backend
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- cache - cache
- seeder - seeder
@ -114,9 +109,7 @@ services:
networks: networks:
- backend - backend
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- cache - cache
- seeder - seeder

View File

@ -15,4 +15,7 @@ IMAP_ENABLED=false
POSTGRES_PASSWORD="{{ database_password }}" POSTGRES_PASSWORD="{{ database_password }}"
DATABASE_URL="postgres://{{ database_username }}:{{ database_password }}@{{database_host}}/{{database_databasename}}?pool=20&encoding=unicode&reconnect=true" DATABASE_URL="postgres://{{ database_username }}:{{ database_password }}@{{database_host}}/{{database_databasename}}?pool=20&encoding=unicode&reconnect=true"
RAILS_MIN_THREADS=4 RAILS_MIN_THREADS=4
RAILS_MAX_THREADS=16 RAILS_MAX_THREADS=16
PGDATA="pgdata"
OPDATA="opdata"

View File

@ -4,12 +4,7 @@
loop: "{{ domains }}" loop: "{{ domains }}"
loop_control: loop_control:
loop_var: domain loop_var: domain
- name: create database in central Postgres
include_role:
name: docker-postgres
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -12,14 +12,22 @@ services:
- assets:/app/client/dist - assets:/app/client/dist
- data:/data - data:/data
- config:/config - config:/config
restart: "always"
depends_on: depends_on:
- redis
{% if not ( enable_central_database | lower | bool ) %}
- database - database
- redis
{% include 'templates/docker-postgres-service.yml.j2' %} restart: "always"
{% endif %} database:
image: postgres:13-alpine
env_file:
- .env
volumes:
- database:/var/lib/postgresql/data
restart: "always"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U peertube"]
interval: 10s
timeout: 5s
retries: 6
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
@ -27,9 +35,7 @@ services:
- .env - .env
volumes: volumes:
assets: assets:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
data: data:
redis: redis:
config: config:

View File

@ -1,12 +1,7 @@
--- ---
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -15,9 +15,7 @@ services:
ports: ports:
- "{{http_port}}:80" - "{{http_port}}:80"
depends_on: depends_on:
{% if not ( enable_central_database | lower | bool ) %}
- database - database
{% endif %}
- redis - redis
worker: worker:
image: zknt/pixelfed image: zknt/pixelfed
@ -31,27 +29,22 @@ services:
- "bootstrap:/var/www/bootstrap" - "bootstrap:/var/www/bootstrap"
- "./env:/var/www/.env" - "./env:/var/www/.env"
entrypoint: /worker-entrypoint.sh entrypoint: /worker-entrypoint.sh
depends_on:
- database
- redis
- application
healthcheck: healthcheck:
test: php artisan horizon:status | grep running test: php artisan horizon:status | grep running
interval: 60s interval: 60s
timeout: 5s timeout: 5s
retries: 1 retries: 1
depends_on:
- redis
- application
{% if not ( enable_central_database | lower | bool ) %}
- database
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
{% include 'templates/docker-redis-service.yml.j2' %} {% include 'templates/docker-redis-service.yml.j2' %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
redis: redis:
application_data: application_data:
bootstrap: bootstrap:

View File

@ -56,11 +56,17 @@ MAIL_ENCRYPTION=tls
## Databases (MySQL) ## Databases (MySQL)
DB_CONNECTION=mysql DB_CONNECTION=mysql
DB_DATABASE={{database_databasename}} DB_DATABASE=pixelfed
DB_HOST={{database_host}} DB_HOST=database
DB_PASSWORD="{{pixelfed_database_password}}" DB_PASSWORD="{{pixelfed_database_password}}"
DB_PORT=3306 DB_PORT=3306
DB_USERNAME={{database_username}} DB_USERNAME=pixelfed
# pass the same values to the db itself
MYSQL_DATABASE="pixelfed"
MYSQL_USER="pixelfed"
MYSQL_PASSWORD="{{pixelfed_database_password}}"
MYSQL_ROOT_PASSWORD="{{pixelfed_database_password}}"
MARIADB_AUTO_UPGRADE="1"
## Cache (Redis) ## Cache (Redis)
REDIS_CLIENT=phpredis REDIS_CLIENT=phpredis

View File

@ -0,0 +1,22 @@
- name: Create database
postgresql_db:
name: "{{ database_databasename }}"
state: present
login_user: postgres
login_password: "{{ central_postgres_password }}"
login_host: 127.0.0.1
login_port: 5432
listen: create database
- name: Create database user
postgresql_user:
name: "{{ database_username }}"
password: "{{ database_password }}"
db: "{{ database_databasename }}"
priv: ALL
state: present
login_user: postgres
login_password: "{{ central_postgres_password }}"
login_host: 127.0.0.1
login_port: 5432
listen: create database

View File

@ -11,44 +11,12 @@
detach: yes detach: yes
env: env:
POSTGRES_PASSWORD: "{{ central_postgres_password }}" POSTGRES_PASSWORD: "{{ central_postgres_password }}"
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" # Necessary for docker-matrix
networks: networks:
- name: postgres_network - name: postgres_network
published_ports: published_ports:
- "127.0.0.1:5432:5432" - "127.0.0.1:5432:5432"
when: run_once_docker_postgres is not defined when: run_once_docker_postgres is not defined
- name: wait for availability of postgres
wait_for:
host: "127.0.0.1"
port: "5432"
delay: 0
timeout: 120
when: run_once_docker_postgres is not defined
- name: Create database
postgresql_db:
name: "{{ database_databasename }}"
state: present
login_user: postgres
login_password: "{{ central_postgres_password }}"
login_host: 127.0.0.1
login_port: 5432
listen: create database
- name: Create database user
postgresql_user:
name: "{{ database_username }}"
password: "{{ database_password }}"
db: "{{ database_databasename }}"
priv: ALL
state: present
login_user: postgres
login_password: "{{ central_postgres_password }}"
login_host: 127.0.0.1
login_port: 5432
listen: create database
- name: Run the docker_postgres tasks once - name: Run the docker_postgres tasks once
set_fact: set_fact:
run_once_docker_postgres: true run_once_docker_postgres: true

View File

@ -8,11 +8,6 @@
vars: vars:
nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size {{wordpress_max_upload_size}};" nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size {{wordpress_max_upload_size}};"
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -15,19 +15,17 @@ services:
WORDPRESS_DB_USER: "{{database_username}}" WORDPRESS_DB_USER: "{{database_username}}"
WORDPRESS_DB_PASSWORD: "{{database_password}}" WORDPRESS_DB_PASSWORD: "{{database_password}}"
WORDPRESS_DB_NAME: "{{database_databasename}}" WORDPRESS_DB_NAME: "{{database_databasename}}"
links:
- database
volumes: volumes:
- data:/var/www/html - data:/var/www/html
{% if not ( enable_central_database | lower | bool ) %}
depends_on: depends_on:
- database - database
{% include 'templates/docker-mariadb-service.yml.j2' %} {% include 'templates/docker-mariadb-service.yml.j2' %}
{% endif %}
volumes: volumes:
{% if not ( enable_central_database | lower | bool ) %}
database: database:
{% endif %}
data: data:
networks: networks:
default: default:

View File

@ -2,11 +2,6 @@
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create database in central MariaDB
include_role:
name: docker-mariadb
when: enable_central_database | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose_instance_directory}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose_instance_directory}}"

View File

@ -16,15 +16,30 @@ services:
YOURLS_SITE: "https://{{domain}}" YOURLS_SITE: "https://{{domain}}"
YOURLS_USER: "{{yourls_user}}" YOURLS_USER: "{{yourls_user}}"
YOURLS_PASS: "{{yourls_user_password}}" YOURLS_PASS: "{{yourls_user_password}}"
{% if not ( enable_central_database | lower | bool ) %} links:
- database
depends_on: depends_on:
- database - database
database:
{% include 'templates/docker-mariadb-service.yml.j2' %} logging:
driver: journald
image: mariadb
restart: always
environment:
MYSQL_DATABASE: "yourls"
MYSQL_USER: "yourls"
MYSQL_PASSWORD: "{{yourls_database_password}}"
MYSQL_ROOT_PASSWORD: "{{yourls_database_password}}"
MARIADB_AUTO_UPGRADE: "1"
volumes:
- database:/var/lib/mysql
healthcheck:
test: "/usr/bin/mariadb --user=yourls --password={{yourls_database_password}} --execute \"SHOW DATABASES;\""
interval: 3s
timeout: 1s
retries: 5
volumes: volumes:
database: database:
{% endif %}
networks: networks:
default: default:
driver: bridge driver: bridge

View File

@ -9,7 +9,6 @@
MYSQL_PASSWORD: "{{database_password}}" MYSQL_PASSWORD: "{{database_password}}"
MYSQL_ROOT_PASSWORD: "{{database_password}}" MYSQL_ROOT_PASSWORD: "{{database_password}}"
MARIADB_AUTO_UPGRADE: "1" MARIADB_AUTO_UPGRADE: "1"
command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW"
volumes: volumes:
- database:/var/lib/mysql - database:/var/lib/mysql
healthcheck: healthcheck:

View File

@ -5,7 +5,6 @@
- POSTGRES_PASSWORD={{database_password}} - POSTGRES_PASSWORD={{database_password}}
- POSTGRES_USER={{database_username}} - POSTGRES_USER={{database_username}}
- POSTGRES_DB={{database_databasename}} - POSTGRES_DB={{database_databasename}}
- POSTGRES_INITDB_ARGS="--encoding=UTF8 --locale=C"
restart: always restart: always
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U {{database_databasename}}"] test: ["CMD-SHELL", "pg_isready -U {{database_databasename}}"]