captainVersion: 4
services:
    $$cap_appname-db:
        image: postgres:$$cap_postgres_version
        volumes:
            - $$cap_appname-db-data:/var/lib/postgresql/data
        restart: always
        environment:
            POSTGRES_USER: $$cap_pg_user
            POSTGRES_PASSWORD: $$cap_pg_pass
            POSTGRES_DB: $$cap_pg_db
            POSTGRES_INITDB_ARGS: $$cap_pg_initdb_args
        caproverExtra:
            notExposeAsWebApp: 'true'
caproverOneClickApp:
    variables:
        - id: $$cap_postgres_version
          label: Postgres Version
          defaultValue: '9.6'
          description: Check out their Docker page for the valid tags https://hub.docker.com/r/library/postgres/tags/
          validRegex: /^([^\s^\/])+$/
        - id: $$cap_pg_user
          label: Postgres Username
          description: ''
          validRegex: /.{1,}/
        - id: $$cap_pg_pass
          label: Postgres Password
          description: ''
          validRegex: /.{1,}/
        - id: $$cap_pg_db
          label: Postgres Default Database
          description: ''
          validRegex: /.{1,}/
        - id: $$cap_pg_initdb_args
          label: "OPTIONAL: Arguments for 'postgres initdb'"
          description: For example, --data-checksums
          validRegex: /.{0,}/
    instructions:
        start: >-
            PostgreSQL, often simply Postgres, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users.

             After installation on CapRover, it will be available as srv-captain--YOUR_CONTAINER_NAME at port 5432 to other CapRover apps.

             Enter your Postgres Configuration parameters and click on next. It will take about a minute for the process to finish.
        end: "Postgres is deployed and available as srv-captain--$$cap_appname-db:5432 to other apps. For example with NodeJS: 'const client = new Client({ user: 'cap_pg_user', host: 'srv-captain--$$cap_appname', database: 'cap_pg_db', password: '********', port: 5432})'"
    displayName: PostgreSQL
    isOfficial: true
    description: The PostgreSQL object-relational database system provides reliability and data integrity
    documentation: Taken from https://hub.docker.com/_/postgres
