From cda6f1a8dc05d20e8c96df3d2053cbde8d53ece9 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Fri, 5 Jan 2024 20:16:08 +0100 Subject: [PATCH] Added seperat redis --- roles/docker-discourse/handlers/main.yml | 2 +- roles/docker-discourse/tasks/main.yml | 45 +++++++++++++++------ roles/docker-discourse/templates/app.yml.j2 | 21 +++------- roles/docker-discourse/vars/main.yml | 7 ++-- templates/docker-compose-networks.yml.j2 | 2 +- templates/docker-container-networks.yml.j2 | 2 +- templates/docker-service-mariadb.yml.j2 | 3 +- templates/docker-service-postgres.yml.j2 | 3 +- templates/docker-service-redis.yml.j2 | 3 +- 9 files changed, 51 insertions(+), 37 deletions(-) diff --git a/roles/docker-discourse/handlers/main.yml b/roles/docker-discourse/handlers/main.yml index d971cecb..51f3be74 100644 --- a/roles/docker-discourse/handlers/main.yml +++ b/roles/docker-discourse/handlers/main.yml @@ -2,4 +2,4 @@ - name: recreate discourse command: cmd: ./launcher rebuild app - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{discourse_repository_directory}}" diff --git a/roles/docker-discourse/tasks/main.yml b/roles/docker-discourse/tasks/main.yml index 04a716ec..836d943d 100644 --- a/roles/docker-discourse/tasks/main.yml +++ b/roles/docker-discourse/tasks/main.yml @@ -18,30 +18,51 @@ state: directory mode: 0755 -- name: checkout repository - ansible.builtin.shell: git checkout . - become: true - args: - chdir: "{{docker_compose_instance_directory}}" - ignore_errors: true +- name: add docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + notify: docker compose project setup + +- name: flush, to recreate discourse docker compose + meta: flush_handlers + when: enable_central_database | bool - name: pull docker repository git: repo: "https://github.com/discourse/discourse_docker.git" - dest: "{{docker_compose_instance_directory}}" + dest: "{{discourse_repository_directory}}" update: yes notify: recreate discourse become: true ignore_errors: true -- name: set chmod 700 for {{docker_compose_instance_directory}}containers +- name: set chmod 700 for {{discourse_repository_directory}}containers ansible.builtin.file: - path: "{{docker_compose_instance_directory}}/containers" + path: "{{discourse_repository_directory}}/containers" mode: '700' state: directory -- name: "copy configuration to {{docker_compose_instance_directory}}containers/app.yml" +- name: "copy configuration to {{discourse_repository_directory}}containers/app.yml" template: src: app.yml.j2 - dest: "{{docker_compose_instance_directory}}containers/app.yml" - notify: recreate discourse \ No newline at end of file + dest: "{{discourse_repository_directory}}containers/app.yml" + notify: recreate discourse + +- name: "Ensure {{docker_compose_project_name}}_default_network network exists" + community.docker.docker_network: + name: "{{docker_compose_project_name}}_default_network" + state: present + when: enable_central_database | bool + +- name: "add central database temporary to {{docker_compose_project_name}}_default_network" + command: + cmd: "docker network connect discourse_default_network central-{{ database_type }}" + when: enable_central_database | bool + +- name: flush, to recreate discourse app + meta: flush_handlers + when: enable_central_database | bool + +- name: "remove central database from {{docker_compose_project_name}}_default_network" + command: + cmd: "docker network disconnect discourse_default_network central-{{ database_type }}" + when: enable_central_database | bool diff --git a/roles/docker-discourse/templates/app.yml.j2 b/roles/docker-discourse/templates/app.yml.j2 index 607a0d39..6d73a8e4 100644 --- a/roles/docker-discourse/templates/app.yml.j2 +++ b/roles/docker-discourse/templates/app.yml.j2 @@ -1,17 +1,8 @@ -## this is the all-in-one, standalone Discourse Docker container template -## -## After making changes to this file, you MUST rebuild -## /var/discourse/launcher rebuild app -## -## BE *VERY* CAREFUL WHEN EDITING! -## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT! -## visit http://www.yamllint.com/ to validate this file as needed - templates: {% if not enable_central_database | bool %} - "templates/postgres.template.yml" {% endif %} - - "templates/redis.template.yml" + #- "templates/redis.template.yml" - "templates/web.template.yml" ## Uncomment the next line to enable the IPv6 listener #- "templates/web.ipv6.template.yml" @@ -25,7 +16,6 @@ templates: ## see https://meta.discourse.org/t/17247 for details expose: - "127.0.0.1:{{http_port}}:80" # http - #- "443:443" # https params: db_default_text_search_config: "pg_catalog.english" @@ -73,13 +63,14 @@ env: DISCOURSE_SMTP_DOMAIN: {{ system_email_domain }} DISCOURSE_NOTIFICATION_EMAIL: {{ system_email }} -{% if enable_central_database | bool %} # Database Configuration DISCOURSE_DB_USERNAME: {{ database_username }} DISCOURSE_DB_PASSWORD: {{ database_password }} DISCOURSE_DB_HOST: {{ database_host }} DISCOURSE_DB_NAME: {{ database_databasename }} -{% endif %} + + # Redis Configuration + DISCOURSE_REDIS_HOST: {{docker_compose_project_name}}-redis ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate #LETSENCRYPT_ACCOUNT_EMAIL: administrator@veen.world @@ -127,7 +118,5 @@ run: - exec: echo "End of custom commands" docker_args: -{% if enable_central_database | bool %} - - --network=central_{{ database_type }}_network -{% endif %} + - --network={{docker_compose_project_name}}_default_network - --name=discourse_application diff --git a/roles/docker-discourse/vars/main.yml b/roles/docker-discourse/vars/main.yml index 03bf487c..97076eb9 100644 --- a/roles/docker-discourse/vars/main.yml +++ b/roles/docker-discourse/vars/main.yml @@ -1,3 +1,4 @@ -docker_compose_project_name: "discourse" -database_password: "{{ baserow_database_password }}" -database_type: "postgres" \ No newline at end of file +docker_compose_project_name: "discourse" +database_password: "{{ baserow_database_password }}" +database_type: "postgres" +discourse_repository_directory: "{{ path_docker_compose_instances + docker_compose_project_name + '/repository/' }}" \ No newline at end of file diff --git a/templates/docker-compose-networks.yml.j2 b/templates/docker-compose-networks.yml.j2 index 6f6c10d8..ac554a56 100644 --- a/templates/docker-compose-networks.yml.j2 +++ b/templates/docker-compose-networks.yml.j2 @@ -4,5 +4,5 @@ networks: central_{{ database_type }}_network: external: true {% endif %} - {{docker_compose_project_name}}_network: + default_network: {{ "\n" }} \ No newline at end of file diff --git a/templates/docker-container-networks.yml.j2 b/templates/docker-container-networks.yml.j2 index 3ff0a631..291d0fee 100644 --- a/templates/docker-container-networks.yml.j2 +++ b/templates/docker-container-networks.yml.j2 @@ -1,6 +1,6 @@ # This template needs to be included in docker-compose.yml containers networks: - {{docker_compose_project_name}}_network: + default_network: {% if enable_central_database | bool %} central_{{ database_type }}_network: {% endif %} diff --git a/templates/docker-service-mariadb.yml.j2 b/templates/docker-service-mariadb.yml.j2 index c6bb1ce4..5a74bc63 100644 --- a/templates/docker-service-mariadb.yml.j2 +++ b/templates/docker-service-mariadb.yml.j2 @@ -1,6 +1,7 @@ # This template needs to be included in docker-compose.yml, which depend on a mariadb database {% if not enable_central_database | bool %} database: + container_name: {{docker_compose_project_name}}-mariadb logging: driver: journald image: mariadb @@ -20,6 +21,6 @@ timeout: 1s retries: 5 networks: - - {{docker_compose_project_name}}_network + - default_network {% endif %} {{ "\n" }} \ No newline at end of file diff --git a/templates/docker-service-postgres.yml.j2 b/templates/docker-service-postgres.yml.j2 index a2c5b5ea..ba0d6684 100644 --- a/templates/docker-service-postgres.yml.j2 +++ b/templates/docker-service-postgres.yml.j2 @@ -2,6 +2,7 @@ {% if not enable_central_database | bool %} database: image: postgres:{{database_version}}-alpine + container_name: {{docker_compose_project_name}}-postgres environment: - POSTGRES_PASSWORD={{database_password}} - POSTGRES_USER={{database_username}} @@ -18,6 +19,6 @@ source: database target: /var/lib/postgresql/data networks: - - {{docker_compose_project_name}}_network + - default_network {% endif %} {{ "\n" }} \ No newline at end of file diff --git a/templates/docker-service-redis.yml.j2 b/templates/docker-service-redis.yml.j2 index 26d15317..d4cf773d 100644 --- a/templates/docker-service-redis.yml.j2 +++ b/templates/docker-service-redis.yml.j2 @@ -1,6 +1,7 @@ # This template needs to be included in docker-compose.yml, which depend on redis redis: image: redis:alpine + container_name: {{docker_compose_project_name}}-redis restart: always logging: driver: journald @@ -12,5 +13,5 @@ timeout: 3s retries: 30 networks: - - {{docker_compose_project_name}}_network + - default_network {{ "\n" }} \ No newline at end of file