From e09d5022db4f78b9e2b0a86c0cc4556b4807bc88 Mon Sep 17 00:00:00 2001 From: "Kevin Veen-Birkenbach [aka. Frantz]" Date: Fri, 8 Oct 2021 22:08:48 +0200 Subject: [PATCH] Optimized docker nextcloud for backup --- roles/docker-nextcloud/README.md | 2 + roles/docker-nextcloud/handlers/main.yml | 5 ++ roles/docker-nextcloud/tasks/main.yml | 67 +++---------------- .../templates/docker-compose.yml.j2 | 66 ++++++++++++++++++ 4 files changed, 84 insertions(+), 56 deletions(-) create mode 100644 roles/docker-nextcloud/handlers/main.yml create mode 100644 roles/docker-nextcloud/templates/docker-compose.yml.j2 diff --git a/roles/docker-nextcloud/README.md b/roles/docker-nextcloud/README.md index 63e112bd..02e3e5a5 100644 --- a/roles/docker-nextcloud/README.md +++ b/roles/docker-nextcloud/README.md @@ -71,3 +71,5 @@ To use occ run: - https://help.nextcloud.com/t/update-to-22-failed-with-database-error-updated/120682 - https://help.nextcloud.com/t/nc-update-to-21-0-0-beta1-exception-database-error/101124/4 - https://wolfgang.gassler.org/reset-password-mariadb-mysql-docker/ +- https://unix.stackexchange.com/questions/478855/ansible-docker-container-and-depends-on +- https://github.com/gdiepen/docker-convenience-scripts diff --git a/roles/docker-nextcloud/handlers/main.yml b/roles/docker-nextcloud/handlers/main.yml new file mode 100644 index 00000000..73e304d6 --- /dev/null +++ b/roles/docker-nextcloud/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: recreate nextcloud + command: + cmd: docker-compose -p nextcloud up -d --force-recreate + chdir: /usr/local/bin/nextcloud/ diff --git a/roles/docker-nextcloud/tasks/main.yml b/roles/docker-nextcloud/tasks/main.yml index 65639b16..74ae58bf 100644 --- a/roles/docker-nextcloud/tasks/main.yml +++ b/roles/docker-nextcloud/tasks/main.yml @@ -6,6 +6,7 @@ template: src=templates/nextcloud.conf.j2 dest=/etc/nginx/conf.d/{{domain}}.conf notify: restart nginx +# @todo rename - name: "create /usr/local/bin/docker-nextcloud/" file: path: "/usr/local/bin/docker-nextcloud" @@ -16,59 +17,13 @@ template: src=templates/nginx.conf.j2 dest=/usr/local/bin/docker-nextcloud/nginx.conf notify: restart nginx -- name: "setup nextcloud" - docker_compose: - project_name: nextcloud - definition: - application: - image: "nextcloud:{{nextcloud_version}}-fpm-alpine" - restart: always - log_driver: journald - links: - - database - volumes: - - nextcloud-data:/var/www/html - environment: - COMPOSE_HTTP_TIMEOUT: 120 - DOCKER_CLIENT_TIMEOUT: 120 - MYSQL_DATABASE: "nextcloud" - MYSQL_USER: "nextcloud" - MYSQL_PASSWORD: "{{nextcloud_database_password}}" - MYSQL_HOST: database:3306 - database: - log_driver: journald - image: mariadb - environment: - COMPOSE_HTTP_TIMEOUT: 120 - DOCKER_CLIENT_TIMEOUT: 120 - MYSQL_DATABASE: "nextcloud" - MYSQL_USER: "nextcloud" - MYSQL_PASSWORD: "{{nextcloud_database_password}}" - MYSQL_RANDOM_ROOT_PASSWORD: 'yes' - volumes: - - nextcloud-database:/var/lib/mysql - restart: always - web: - image: nginx:alpine - log_driver: journald - restart: always - ports: - - "127.0.0.1:{{http_port}}:80" - links: - - application - volumes: - - /usr/local/bin/docker-nextcloud/nginx.conf:/etc/nginx/nginx.conf:ro - volumes_from: - - application - redis: - image: redis:alpine - restart: always - cron: - image: "nextcloud:{{nextcloud_version}}-fpm-alpine" - restart: always - volumes: - - nextcloud-data:/var/www/html - entrypoint: /cron.sh - # depends_on: - # - database - # - redis +# @todo rename +- name: "create /usr/local/bin/nextcloud/" + file: + path: "/usr/local/bin/nextcloud" + state: directory + mode: 0755 + +- name: add docker-compose.yml + template: src=docker-compose.yml.j2 dest=/usr/local/bin/nextcloud/docker-compose.yml + notify: recreate nextcloud diff --git a/roles/docker-nextcloud/templates/docker-compose.yml.j2 b/roles/docker-nextcloud/templates/docker-compose.yml.j2 new file mode 100644 index 00000000..d38e467f --- /dev/null +++ b/roles/docker-nextcloud/templates/docker-compose.yml.j2 @@ -0,0 +1,66 @@ +version: '2' + +services: + application: + image: "nextcloud:{{nextcloud_version}}-fpm-alpine" + restart: always + logging: + driver: journald + depends_on: + - database + volumes: + - data:/var/www/html + environment: + COMPOSE_HTTP_TIMEOUT: 120 + DOCKER_CLIENT_TIMEOUT: 120 + MYSQL_DATABASE: "nextcloud" + MYSQL_USER: "nextcloud" + MYSQL_PASSWORD: "{{nextcloud_database_password}}" + MYSQL_HOST: database:3306 + database: + logging: + driver: journald + image: mariadb + environment: + COMPOSE_HTTP_TIMEOUT: 120 + DOCKER_CLIENT_TIMEOUT: 120 + MYSQL_DATABASE: "nextcloud" + MYSQL_USER: "nextcloud" + MYSQL_PASSWORD: "{{nextcloud_database_password}}" + MYSQL_RANDOM_ROOT_PASSWORD: 'yes' + volumes: + - database:/var/lib/mysql + restart: always + web: + image: nginx:alpine + logging: + driver: journald + restart: always + ports: + - "127.0.0.1:{{http_port}}:80" + depends_on: + - application + volumes: + - /usr/local/bin/docker-nextcloud/nginx.conf:/etc/nginx/nginx.conf:ro + volumes_from: + - application + redis: + image: redis:alpine + restart: always + cron: + image: "nextcloud:{{nextcloud_version}}-fpm-alpine" + restart: always + logging: + driver: journald + volumes: + - data:/var/www/html + entrypoint: /cron.sh + depends_on: + - database + - redis +volumes: + database: + data: +networks: + default: + driver: bridge