diff --git a/resources/docker-compose/nextcloud.yaml.j2 b/resources/docker-compose/nextcloud.yaml.j2 new file mode 100644 index 0000000..1f0b776 --- /dev/null +++ b/resources/docker-compose/nextcloud.yaml.j2 @@ -0,0 +1,87 @@ +--- +version: "{{ omni_compose_version | string }}" + + +networks: + nextcloud: + name: nextcloud + driver: overlay + ipam: + driver: default + config: + - subnet: {{ omni_compose_apps.nextcloud.networks.main }} + + +volumes: + database: + name: datastore{{ omni_compose_apps.nextcloud.datastore }}/database + driver: glusterfs + data: + name: datastore/{{ omni_compose_apps.nextcloud.datastore }}/userdata + driver: glusterfs + config: + name: datastore{{ omni_compose_apps.nextcloud.datastore }}/config + driver: glusterfs + + +services: + database: + image: mariadb:{{ omni_compose_apps.nextcloud.versions.database | default(omni_compose_apps.nextcloud.versions.default) }} + hostname: nextcloud-database + networks: + - nextcloud + volumes: + - type: volume + source: database + target: /var/lib/mysql + read_only: false + environment: + MYSQL_ROOT_PASSWORD: {{ omni_compose_app_secrets.nextcloud.database_password }} + MYSQL_DATABASE: nextcloud + deploy: + replicas: 1 + + cache: + image: redis:{{ omni_compose_apps.nextcloud.versions.cache | default(omni_compose_apps.nextcloud.versions.default) }} + hostname: nextcloud-cache + networks: + - nextcloud + deploy: + replicas: 1 + + server: + image: nextcloud:{{ omni_compose_apps.nextcloud.versions.server | default(omni_compose_apps.nextcloud.versions.default) }} + hostname: nextcloud-server + networks: + - nextcloud + depends_on: + - database + - cache + ports: + - published: {{ omni_compose_apps.nextcloud.published.ports.80 }} + target: 80 + protocol: tcp + mode: ingress + volumes: + - type: volume + source: data + target: /data + read_only: false + - type: volume + source: config + target: /var/www/html + read_only: false + environment: + NEXTCLOUD_DATA_DIR: /data/ + NEXTCLOUD_ADMIN_USER: admin + NEXTCLOUD_ADMIN_PASSWORD: {{ omni_compose_app_secrets.nextcloud.admin_password }} + NEXTCLOUD_TRUSTED_DOMAINS: localhost {{ inventory_hostname }} {{ omni_compose_apps.nextcloud.published.host }} + MYSQL_DATABASE: nextcloud + MYSQL_USER: root + MYSQL_PASSWORD: {{ omni_compose_app_secrets.nextcloud.database_password }} + MYSQL_HOST: database + REDIS_HOST: cache + PHP_MEMORY_LIMIT: "4G" + PHP_UPLOAD_LIMIT: "4G" + deploy: + replicas: 1