docker-compose-base.yml

157 lines | 5.347 kB Blame History Raw Download
version: "2.2"

networks:
    # DC 1
    dc1_keycloak:
        ipam:
            config:
            - subnet: 10.1.1.0/24
    # DC 2
    dc2_keycloak:
        ipam:
            config:
            - subnet: 10.2.1.0/24
#    # cross-DC
#    loadbalancing:
#        ipam:
#            config:
#            - subnet: 10.0.2.0/24
    # cross-DC
    db_replication:
        ipam:
            config:
            - subnet: 10.0.3.0/24
    # cross-DC
    ispn_replication:
        ipam:
            config:
            - subnet: 10.0.4.0/24
        
services:

    infinispan_dc1:
        build: infinispan
        image: keycloak_test_infinispan:${KEYCLOAK_VERSION:-latest}
        cpuset: ${INFINISPAN_DC1_CPUSET:-1}
        mem_limit: ${INFINISPAN_MEMLIMIT:-1500m}
        networks:
            - ispn_replication
            - dc1_keycloak
        environment:
            CONFIGURATION: clustered-dc1.xml
            PUBLIC_SUBNET: 10.1.1.0/24
            PRIVATE_SUBNET: 10.0.4.0/24
            MGMT_USER: admin
            MGMT_USER_PASSWORD: admin
            TCP_PING_INITIAL_HOSTS: infinispan_dc1[7600]
            JAVA_OPTS: ${INFINISPAN_JVM_MEMORY:--Xms64m -Xmx1g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC} -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
        ports:
            - "9990"

    infinispan_dc2:
        build: infinispan
        image: keycloak_test_infinispan:${KEYCLOAK_VERSION:-latest}
        depends_on:
            infinispan_dc1:
                condition: service_healthy
        cpuset: ${INFINISPAN_DC2_CPUSET:-1}
        mem_limit: ${INFINISPAN_MEMLIMIT:-1500m}
        networks:
            - ispn_replication
            - dc2_keycloak
        environment:
            CONFIGURATION: clustered-dc2.xml
            PUBLIC_SUBNET: 10.2.1.0/24
            PRIVATE_SUBNET: 10.0.4.0/24
            MGMT_USER: admin
            MGMT_USER_PASSWORD: admin
            TCP_PING_INITIAL_HOSTS: infinispan_dc1[7600],infinispan_dc2[7600]
            JAVA_OPTS: ${INFINISPAN_JVM_MEMORY:--Xms64m -Xmx1g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC} -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
        ports:
            - "9990"
    
    
    mariadb_dc1:
        build: 
            context: db/mariadb
            args:
                MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-100}
        image: keycloak_test_mariadb:${KEYCLOAK_VERSION:-latest}
        cpuset: ${DB_DC1_CPUSET:-1}
        mem_limit: ${DB_MEMLIMIT:-2g}
        networks:
            - db_replication
            - dc1_keycloak
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_INITDB_SKIP_TZINFO: foo
            MYSQL_DATABASE: keycloak
            MYSQL_USER: keycloak
            MYSQL_PASSWORD: keycloak
        entrypoint: docker-entrypoint-wsrep.sh
        command: --wsrep-new-cluster
        ports:
            - "3307:3306"
            
    mariadb_dc2:
        build: 
            context: db/mariadb
            args:
                MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-100}
        image: keycloak_test_mariadb:${KEYCLOAK_VERSION:-latest}
        depends_on: 
            mariadb_dc1:
                condition: service_healthy
        cpuset: ${DB_DC2_CPUSET:-1}
        mem_limit: ${DB_MEMLIMIT:-2g}
        networks:
            - db_replication
            - dc2_keycloak
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_INITDB_SKIP_TZINFO: foo
        entrypoint: docker-entrypoint-wsrep.sh
        command: --wsrep_cluster_address=gcomm://mariadb_dc1
        ports:
            - "3308:3306"


    loadbalancer_dc1:
        build: load-balancer/wildfly-modcluster
        image: keycloak_test_loadbalancer:${KEYCLOAK_VERSION:-latest}
        cpuset: ${LB_DC1_CPUSET:-1}
        mem_limit: ${LB_MEMLIMIT:-1500m}
        networks:
            - dc1_keycloak
#            - loadbalancing
        environment:
            PRIVATE_SUBNET: 10.1.1.0/24
#            PUBLIC_SUBNET: 10.0.2.0/24
            JAVA_OPTS: ${LB_JVM_MEMORY:--Xms64m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m} -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
            HTTP_MAX_CONNECTIONS: ${LB_HTTP_MAX_CONNECTIONS:-50000}
            WORKER_IO_THREADS: ${LB_WORKER_IO_THREADS:-2}
            WORKER_TASK_MAX_THREADS: ${LB_WORKER_TASK_MAX_THREADS:-16}
        ports:
            - "8081:8080"
            - "9991:9990"
            
    loadbalancer_dc2:
        build: load-balancer/wildfly-modcluster
        image: keycloak_test_loadbalancer:${KEYCLOAK_VERSION:-latest}
        cpuset: ${LB_DC2_CPUSET:-1}
        mem_limit: ${LB_MEMLIMIT:-1500m}
        networks:
            - dc2_keycloak
#            - loadbalancing
        environment:
            PRIVATE_SUBNET: 10.2.1.0/24
#            PUBLIC_SUBNET: 10.0.2.0/24
            JAVA_OPTS: ${LB_JVM_MEMORY:--Xms64m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m} -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
            HTTP_MAX_CONNECTIONS: ${LB_HTTP_MAX_CONNECTIONS:-50000}
            WORKER_IO_THREADS: ${LB_WORKER_IO_THREADS:-2}
            WORKER_TASK_MAX_THREADS: ${LB_WORKER_TASK_MAX_THREADS:-16}
        ports:
            - "8082:8080"
            - "9992:9990"