<%_ if (applicationType == 'gateway' && prodDatabaseType != 'cassandra') { _%>
#-------------------------------------------------------------------------------
# Note for using the rate-limiting:
#   The comment part won't be copied if you use the subgenerator docker-compose
#   you have to manually copy it
#-------------------------------------------------------------------------------
<%_ } _%>
version: '2'
services:
    <%= baseName.toLowerCase() %>-app:
        image: <%= baseName.toLowerCase() %>
        <%_ if (prodDatabaseType == 'mysql' || prodDatabaseType == 'postgresql' || prodDatabaseType == 'mongodb' || applicationType == 'gateway' || prodDatabaseType == 'cassandra' || searchEngine == 'elasticsearch' || applicationType == 'microservice' || applicationType == 'gateway') { _%>
        external_links:
        <%_ } _%>
        <%_ if (prodDatabaseType == 'mysql') { _%>
            - <%= baseName.toLowerCase() %>-mysql:mysql
        <%_ } _%>
        <%_ if (prodDatabaseType == 'mariadb') { _%>
            - <%= baseName.toLowerCase() %>-mariadb:mariadb
        <%_ } _%>
        <%_ if (prodDatabaseType == 'postgresql') { _%>
            - <%= baseName.toLowerCase() %>-postgresql:postgresql
        <%_ } _%>
        <%_ if (prodDatabaseType == 'mongodb') { _%>
            - <%= baseName.toLowerCase() %>-mongodb:mongodb
        <%_ } _%>
        <%_ if (prodDatabaseType == 'cassandra') { _%>
            - <%= baseName.toLowerCase() %>-cassandra:cassandra
        <%_ } _%>
        <%_ if (applicationType == 'gateway' && prodDatabaseType != 'cassandra') { _%>
            # Uncomment to have Cassandra working with the gateway
            # - <%= baseName.toLowerCase() %>-cassandra:cassandra
        <%_ } _%>
        <%_ if (searchEngine == 'elasticsearch') { _%>
            - <%= baseName.toLowerCase() %>-elasticsearch:elasticsearch
        <%_ } _%>
        <%_ if (messageBroker == 'kafka') { _%>
            - kafka:kafka
            - zookeeper:zookeeper
        <%_ } _%>
        <%_ if (serviceDiscoveryType == 'eureka' && (applicationType == 'microservice' || applicationType == 'gateway' || applicationType == 'uaa')) { _%>
            - jhipster-registry:registry
        <%_ } _%>
        environment:
            - SPRING_PROFILES_ACTIVE=prod,swagger
            <%_ if (applicationType == 'microservice' || applicationType == 'gateway' || applicationType == 'uaa') { _%>
                  <%_ if (serviceDiscoveryType == 'consul') { _%>
            - SPRING_CLOUD_CONSUL_HOST=consul
            - SPRING_CLOUD_CONSUL_PORT=8500
                  <%_ } _%>
                  <%_ if (serviceDiscoveryType == 'eureka') { _%>
            - SPRING_CLOUD_CONFIG_URI=http://admin:admin@registry:8761/config
                  <%_ } _%>
            <%_ } _%>
            <%_ if (prodDatabaseType == 'mysql') { _%>
            - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/<%= baseName.toLowerCase() %>?useUnicode=true&characterEncoding=utf8&useSSL=false
            <%_ } _%>
            <%_ if (prodDatabaseType == 'mariadb') { _%>
            - SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/<%= baseName.toLowerCase() %>
            <%_ } _%>
            <%_ if (prodDatabaseType == 'postgresql') { _%>
            - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/<%= baseName %>
            <%_ } _%>
            <%_ if (prodDatabaseType == 'mongodb') { _%>
            - SPRING_DATA_MONGODB_URI=mongodb://mongodb:27017
            - SPRING_DATA_MONGODB_DATABASE=<%= baseName %>
            <%_ } _%>
            <%_ if (applicationType == 'gateway' || prodDatabaseType == 'cassandra') { _%>
            - SPRING_DATA_CASSANDRA_CONTACTPOINTS=cassandra
            - JHIPSTER_SLEEP=30 # gives time for the cassandra cluster to start and execute the migration scripts
            <%_ } else { _%>
            - JHIPSTER_SLEEP=10 # gives time for the database to boot before the application
            <%_ } _%>
            <%_ if (searchEngine == 'elasticsearch') { _%>
            - SPRING_DATA_ELASTICSEARCH_CLUSTER_NODES=elasticsearch:9300
            <%_ } _%>
            <%_ if (messageBroker == 'kafka') { _%>
            - SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS=kafka
            - SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES=zookeeper
            <%_ } _%>
        <%_ if (applicationType == 'monolith' || applicationType == 'gateway') { _%>
        ports:
            - <%= serverPort %>:<%= serverPort %>
        <%_ } _%>
    <%_ if (prodDatabaseType == 'mysql') { _%>
    <%= baseName.toLowerCase() %>-mysql:
        extends:
            file: mysql.yml
            service: <%= baseName.toLowerCase() %>-mysql
    <%_ } _%>
    <%_ if (prodDatabaseType == 'mariadb') { _%>
    <%= baseName.toLowerCase() %>-mariadb:
        extends:
            file: mariadb.yml
            service: <%= baseName.toLowerCase() %>-mariadb
    <%_ } _%>
    <%_ if (prodDatabaseType == 'postgresql') { _%>
    <%= baseName.toLowerCase() %>-postgresql:
        extends:
            file: postgresql.yml
            service: <%= baseName.toLowerCase() %>-postgresql
    <%_ } _%>
    <%_ if (prodDatabaseType == 'mongodb') { _%>
    <%= baseName.toLowerCase() %>-mongodb:
        extends:
            file: mongodb.yml
            service: <%= baseName.toLowerCase() %>-mongodb
    <%_ } _%>
    <%_ if (prodDatabaseType == 'cassandra') { _%>
    <%= baseName.toLowerCase() %>-cassandra:
        extends:
            file: cassandra-cluster.yml
            service: <%= baseName.toLowerCase() %>-cassandra
    <%= baseName.toLowerCase() %>-cassandra-node:
        image: <%= DOCKER_CASSANDRA %>
        links:
            - <%= baseName.toLowerCase() %>-cassandra:seed
        environment:
            - CASSANDRA_SEEDS=seed
    <%= baseName.toLowerCase() %>-cassandra-migration:
        extends:
            file: cassandra-migration.yml
            service: <%= baseName.toLowerCase() %>-cassandra-migration
        links:
            - <%= baseName.toLowerCase() %>-cassandra
        environment:
            - CREATE_KEYSPACE_SCRIPT=create-keyspace-prod.cql
    <%_ } _%>
    <%_ if (applicationType == 'gateway' && prodDatabaseType != 'cassandra') { _%>
    # Uncomment to have Cassandra working with the gateway
    # <%= baseName.toLowerCase() %>-cassandra:
    #     extends:
    #         file: cassandra-cluster.yml
    #         service: <%= baseName.toLowerCase() %>-cassandra
    # <%= baseName.toLowerCase() %>-cassandra-migration:
    #     extends:
    #         file: cassandra-migration.yml
    #         service: <%= baseName.toLowerCase() %>-cassandra-migration
    #     environment:
    #         - CREATE_KEYSPACE_SCRIPT=create-keyspace-prod.cql
    <%_ } _%>
    <%_ if (searchEngine == 'elasticsearch') { _%>
    <%= baseName.toLowerCase() %>-elasticsearch:
        extends:
            file: elasticsearch.yml
            service: <%= baseName.toLowerCase() %>-elasticsearch
    <%_ } _%>
    <%_ if (messageBroker == 'kafka') { _%>
    kafka:
        extends:
            file: kafka.yml
            service: kafka
        environment:
            - KAFKA_ADVERTISED_HOST_NAME=kafka
    zookeeper:
        extends:
            file: kafka.yml
            service: zookeeper
    <%_ } _%>
    <%_ if (applicationType == 'microservice' || applicationType == 'gateway' || applicationType == 'uaa') { _%>
      <%_ if (serviceDiscoveryType == 'eureka') { _%>
    jhipster-registry:
        extends:
            file: jhipster-registry.yml
            service: jhipster-registry
        environment:
            - SPRING_CLOUD_CONFIG_SERVER_NATIVE_SEARCH_LOCATIONS=file:./central-config/docker-config/
      <%_ } _%>
      <%_ if (serviceDiscoveryType == 'consul') { _%>
    consul:
        image: <%= DOCKER_CONSUL %>
        command: consul agent -dev -ui -client 0.0.0.0
        ports:
            - 8300:8300
            - 8500:8500
            - 8600:8600

    consul-config-loader:
        image: pbesson/consul-config-loader
        volumes:
            - ./central-server-config:/config
        environment:
            - INIT_SLEEP_SECONDS=5
            - CONSUL_URL=consul
            - CONSUL_PORT=8500
        # Uncomment to load configuration into Consul from a git repository
        # as configured in central-server-config/git2consul.json
        # Also set SPRING_CLOUD_CONSUL_CONFIG_FORMAT=files on your apps
        #    - CONFIG_MODE=git
      <%_ } _%>
    <%_ } _%>
