{
    "captainVersion": "2",
    "documentation": "Taken from https://hub.docker.com/r/bitnami/discourse",
    "displayName": "Discourse",
    "description": "Discourse is the 100% open source discussion platform built for the next decade of the Internet. Use it as a mailing list, discussion forum, long-form chat room, and more!",
    "dockerCompose": {
        "version": "2",
        "services": {
            "$$cap_appname-postgresql": {
                "documentation": "Taken from https://hub.docker.com/r/bitnami/postgresql",
                "image": "docker.io/bitnami/postgresql:$$cap_postgresql_version",
                "notExposeAsWebApp": "true",
                "restart": "always",
                "environment": { "ALLOW_EMPTY_PASSWORD": "yes" },
                "volumes": ["$$cap_appname-postgresql-data:/bitnami/postgresql"]
            },
            "$$cap_appname-redis": {
                "documentation": "Taken from https://hub.docker.com/r/bitnami/redis",
                "image": "docker.io/bitnami/redis:$$cap_redis_version",
                "notExposeAsWebApp": "true",
                "restart": "always",
                "environment": { "ALLOW_EMPTY_PASSWORD": "yes" },
                "volumes": ["$$cap_appname-redis-data:/bitnami"]
            },
            "$$cap_appname": {
                "documentation": "Taken from https://hub.docker.com/r/bitnami/discourse",
                "image": "docker.io/bitnami/discourse:$$cap_discourse_version",
                "containerHttpPort": "3000",
                "depends_on": [
                    "$$cap_appname-postgresql",
                    "$$cap_appname-redis"
                ],
                "volumes": ["$$cap_appname-data:/bitnami"],
                "environment": {
                    "POSTGRESQL_HOST": "srv-captain--$$cap_appname-postgresql",
                    "POSTGRESQL_ROOT_USER": "postgres",
                    "POSTGRESQL_CLIENT_CREATE_DATABASE_NAME": "$$cap_db_name",
                    "POSTGRESQL_CLIENT_CREATE_DATABASE_USERNAME": "$$cap_db_user",
                    "POSTGRESQL_CLIENT_CREATE_DATABASE_PASSWORD": "$$cap_db_pass",
                    "DISCOURSE_USERNAME": "$$cap_admin_user",
                    "DISCOURSE_PASSWORD": "$$cap_admin_pass",
                    "DISCOURSE_EMAIL": "$$cap_admin_email",
                    "DISCOURSE_SITENAME": "$$cap_sitename",
                    "DISCOURSE_POSTGRESQL_NAME": "$$cap_db_name",
                    "DISCOURSE_POSTGRESQL_USERNAME": "$$cap_db_user",
                    "DISCOURSE_POSTGRESQL_PASSWORD": "$$cap_db_pass",
                    "DISCOURSE_HOSTNAME": "$$cap_appname.$$cap_root_domain",
                    "REDIS_HOST": "srv-captain--$$cap_appname-redis",
                    "SMTP_HOST": "$$cap_smtp_host",
                    "SMTP_PORT": "$$cap_smtp_port",
                    "SMTP_USER": "$$cap_smtp_user",
                    "SMTP_PASSWORD": "$$cap_smtp_pass"
                }
            },
            "$$cap_appname-sidekiq": {
                "documentaion": "Taken from https://hub.docker.com/r/bitnami/discourse",
                "notExposeAsWebApp": "true",
                "depends_on": ["$$cap_appname"],
                "volumes": ["$$cap_appname-data:/bitnami"],
                "dockerfileLines": [
                    "FROM docker.io/bitnami/discourse:$$cap_discourse_version",
                    "CMD [\"nami\" , \"start\" , \"--foreground\" , \"discourse-sidekiq\"]"
                ],
                "environment": {
                    "DISCOURSE_POSTGRESQL_NAME": "$$cap_db_name",
                    "DISCOURSE_POSTGRESQL_USERNAME": "$$cap_db_user",
                    "DISCOURSE_POSTGRESQL_PASSWORD": "$$cap_db_pass",
                    "DISCOURSE_HOST": "srv-captain--$$cap_appname",
                    "DISCOURSE_PORT": "3000",
                    "DISCOURSE_HOSTNAME": "$$cap_appname.$$cap_root_domain",
                    "POSTGRESQL_HOST": "srv-captain--$$cap_appname-postgresql",
                    "REDIS_HOST": "srv-captain--$$cap_appname-redis",
                    "SMTP_HOST": "$$cap_smtp_host",
                    "SMTP_PORT": "$$cap_smtp_port",
                    "SMTP_USER": "$$cap_smtp_user",
                    "SMTP_PASSWORD": "$$cap_smtp_pass"
                }
            }
        }
    },
    "instructions": {
        "start": "Discourse is a relatively heavy application, atleast 2GB RAM is recommended to run Discourse",
        "end": "Discourse image is deployed and the installation process has begun. The installation process takes about 10 minutes."
    },
    "variables": [
        {
            "id": "$$cap_discourse_version",
            "label": "Discourse Version",
            "defaultValue": "2-debian-10",
            "description": "Version of Discourse",
            "validRegex": "/^([^\\s^\\/])+$/"
        },
        {
            "id": "$$cap_postgresql_version",
            "label": "Postgresql (database) version",
            "defaultValue": "11-debian-10",
            "description": "Version of Postgresql",
            "validRegex": "/^([^\\s^\\/])+$/"
        },
        {
            "id": "$$cap_sitename",
            "label": "Sitename",
            "defaultValue": "My site!",
            "description": "The title of the site, the words on the tab"
        },
        {
            "id": "$$cap_redis_version",
            "label": "Redis version",
            "defaultValue": "5.0-debian-10",
            "description": "Version of Redis",
            "validRegex": "/^([^\\s^\\/])+$/"
        },
        {
            "id": "$$cap_admin_user",
            "label": "Admin username",
            "defaultValue": "admin",
            "description": "Name of the admin account",
            "validRegex": "/.{1,}/"
        },
        {
            "id": "$$cap_admin_pass",
            "label": "Admin password",
            "defaultValue": "sTr0nG_p@s$wo%d",
            "description": "Password of the admin account",
            "validRegex": "/.{1,}/"
        },
        {
            "id": "$$cap_admin_email",
            "label": "Admin email",
            "defaultValue": "your_email@gmail.com",
            "description": "Email of the admin account",
            "validRegex": "/.{1,}/"
        },
        {
            "id": "$$cap_db_name",
            "label": "Database name",
            "defaultValue": "discourse_db",
            "description": "Name for the database using postgresql",
            "validRegex": "/^([^\\s^\\/])+$/"
        },
        {
            "id": "$$cap_db_user",
            "label": "Database user",
            "defaultValue": "discourse_user",
            "description": "Username for the database using postgresql",
            "validRegex": "/^([^\\s^\\/])+$/"
        },
        {
            "id": "$$cap_db_pass",
            "label": "Database password",
            "defaultValue": "sTr0nG_p@s$wo%d",
            "description": "Password for the database user and root using postgresql",
            "validRegex": "/.{1,}/"
        },
        {
            "id": "$$cap_smtp_host",
            "label": "SMPT host",
            "defaultValue": "smtp.gmail.com",
            "description": "The host for your smtp server"
        },
        {
            "id": "$$cap_smtp_port",
            "label": "SMTP port",
            "defaultValue": "587",
            "description": "The port for your smtp server"
        },
        {
            "id": "$$cap_smtp_user",
            "label": "SMTP user",
            "defaultValue": "your_email@gmail.com",
            "description": "The user for your smtp server"
        },
        {
            "id": "$$cap_smtp_pass",
            "label": "SMTP password",
            "defaultValue": "sTr0nG_p@s$wo%d",
            "description": "The password for your smtp server"
        }
    ]
}
