From c88ba88063b6e54d9a2f14f898698f2725e33cb2 Mon Sep 17 00:00:00 2001 From: Chris Richardson Date: Fri, 16 Sep 2016 18:30:24 -0700 Subject: [PATCH] Improved Eventuate Local support --- _build-and-test-all.sh | 2 +- .../build-and-test-all-eventuate-local.sh | 4 + java-spring/docker-compose-common.yml | 48 ++++ .../docker-compose-eventuate-local.yml | 229 +++++++++++------- java-spring/docker-compose.yml | 82 +++---- java-spring/gradle.properties | 5 +- java-spring/set-env.sh | 21 ++ 7 files changed, 253 insertions(+), 138 deletions(-) create mode 100755 java-spring/build-and-test-all-eventuate-local.sh create mode 100644 java-spring/docker-compose-common.yml create mode 100644 java-spring/set-env.sh diff --git a/_build-and-test-all.sh b/_build-and-test-all.sh index e981415..d42d286 100755 --- a/_build-and-test-all.sh +++ b/_build-and-test-all.sh @@ -26,7 +26,7 @@ if [ "$1" = "--no-rm" ] ; then shift fi -${DOCKER_COMPOSE?} up -d mongodb +${DOCKER_COMPOSE?} up -d mongodb $EXTRA_INFRASTRUCTURE_SERVICES if [ -z "$DOCKER_HOST_IP" ] ; then if which docker-machine >/dev/null; then diff --git a/java-spring/build-and-test-all-eventuate-local.sh b/java-spring/build-and-test-all-eventuate-local.sh new file mode 100755 index 0000000..5f7caca --- /dev/null +++ b/java-spring/build-and-test-all-eventuate-local.sh @@ -0,0 +1,4 @@ +#! /bin/bash + +export EXTRA_INFRASTRUCTURE_SERVICES=cdcservice +../_build-and-test-all.sh -f docker-compose-eventuate-local.yml -P eventuateLocal=1 $* diff --git a/java-spring/docker-compose-common.yml b/java-spring/docker-compose-common.yml new file mode 100644 index 0000000..c8633cf --- /dev/null +++ b/java-spring/docker-compose-common.yml @@ -0,0 +1,48 @@ +apigateway: + image: java:openjdk-8u91-jdk + command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside + environment: + SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + ports: + - "8080:8080" + +accountscommandside: + image: java:openjdk-8u91-jdk + command: java -jar /app/accounts-command-side-service.jar + ports: + - "8085:8080" + +transactionscommandside: + image: java:openjdk-8u91-jdk + command: java -jar /app/transactions-command-side-service.jar + ports: + - "8082:8080" + +accountsqueryside: + image: java:openjdk-8u91-jdk + command: java -jar /app/accounts-query-side-service.jar + environment: + SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + ports: + - "8081:8080" + +customerscommandside: + image: java:openjdk-8u91-jdk + command: java -jar /app/customers-command-side-service.jar + ports: + - "8083:8080" + +customersqueryside: + image: java:openjdk-8u91-jdk + command: java -jar /app/customers-query-side-service.jar + ports: + - "8084:8080" + environment: + SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + +mongodb: + image: mongo:3.0.4 + hostname: mongodb + command: mongod --smallfiles + ports: + - "27017:27017" diff --git a/java-spring/docker-compose-eventuate-local.yml b/java-spring/docker-compose-eventuate-local.yml index cd542c7..8a4eddc 100644 --- a/java-spring/docker-compose-eventuate-local.yml +++ b/java-spring/docker-compose-eventuate-local.yml @@ -1,11 +1,61 @@ +zookeeper: + image: eventuateio/eventuateio-local-zookeeper:0.6.0 + ports: + - 2181:2181 + - 2888:2888 + - 3888:3888 + + +kafka: + image: eventuateio/eventuateio-local-kafka:0.6.0 + ports: + - 9092:9092 + links: + - zookeeper + environment: + - ADVERTISED_HOST_NAME=${DOCKER_HOST_IP} + - KAFKA_HEAP_OPTS=-Xmx320m -Xms320m + - ZOOKEEPER_SERVERS=zookeeper:2181 + +mysql: + image: eventuateio/eventuateio-local-mysql:0.6.0 + ports: + - 3306:3306 + environment: + - MYSQL_ROOT_PASSWORD=rootpassword + - MYSQL_USER=mysqluser + - MYSQL_PASSWORD=mysqlpw + + +cdcservice: + image: eventuateio/eventuateio-local-cdc-service:0.6.0 + ports: + - "8099:8080" + links: + - mysql + - kafka + - zookeeper + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword + +mongodb: + extends: + file: docker-compose-common.yml + service: mongodb + apigateway: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: apigateway volumes: - ./api-gateway-service/build/libs:/app - command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside - ports: - - "8080:8080" links: - accountscommandside - transactionscommandside @@ -13,117 +63,126 @@ apigateway: - customerscommandside - customersqueryside - mongodb + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword accountscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: accountscommandside volumes: - ./accounts-command-side-service/build/libs:/app - command: java -jar /app/accounts-command-side-service.jar - ports: - - "8085:8080" + links: + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword + transactionscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: transactionscommandside volumes: - ./transactions-command-side-service/build/libs:/app - command: java -jar /app/transactions-command-side-service.jar - ports: - - "8082:8080" + links: + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword + accountsqueryside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: accountsqueryside volumes: - ./accounts-query-side-service/build/libs:/app - command: java -jar /app/accounts-query-side-service.jar - ports: - - "8081:8080" links: - mongodb + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword + customerscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: customerscommandside volumes: - ./customers-command-side-service/build/libs:/app - command: java -jar /app/customers-command-side-service.jar - ports: - - "8083:8080" + links: + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword customersqueryside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: customersqueryside volumes: - ./customers-query-side-service/build/libs:/app - command: java -jar /app/customers-query-side-service.jar - ports: - - "8084:8080" links: - mongodb + - mysql + - kafka + - zookeeper environment: - SPRING_DATASOURCE_URL: - SPRING_DATASOURCE_USERNAME: - SPRING_DATASOURCE_PASSWORD: - SPRING_DATASOURCE_DRIVER_CLASS_NAME: - EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: - EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb - EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME: - EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD: - -mongodb: - image: mongo:3.0.4 - hostname: mongodb - command: mongod --smallfiles - ports: - - "27017:27017" + environment: + SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate + SPRING_DATASOURCE_USERNAME: mysqluser + SPRING_DATASOURCE_PASSWORD: mysqlpw + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver + EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181 + EVENTUATELOCAL_CDC_DB_USER_NAME: root + EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword diff --git a/java-spring/docker-compose.yml b/java-spring/docker-compose.yml index 1c5f0cb..5268023 100644 --- a/java-spring/docker-compose.yml +++ b/java-spring/docker-compose.yml @@ -1,11 +1,9 @@ apigateway: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: apigateway volumes: - ./api-gateway-service/build/libs:/app - command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside - ports: - - "8080:8080" links: - accountscommandside - transactionscommandside @@ -14,80 +12,66 @@ apigateway: - customersqueryside - mongodb environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: - SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} accountscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: accountscommandside volumes: - ./accounts-command-side-service/build/libs:/app - command: java -jar /app/accounts-command-side-service.jar - ports: - - "8085:8080" environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} transactionscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: transactionscommandside volumes: - ./transactions-command-side-service/build/libs:/app - command: java -jar /app/transactions-command-side-service.jar - ports: - - "8082:8080" environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} accountsqueryside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: accountsqueryside volumes: - ./accounts-query-side-service/build/libs:/app - command: java -jar /app/accounts-query-side-service.jar - ports: - - "8081:8080" links: - mongodb environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: - SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} customerscommandside: - image: java:openjdk-8u91-jdk - working_dir: /app + extends: + file: docker-compose-common.yml + service: customerscommandside volumes: - ./customers-command-side-service/build/libs:/app - command: java -jar /app/customers-command-side-service.jar - ports: - - "8083:8080" environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} customersqueryside: + extends: + file: docker-compose-common.yml + service: customersqueryside image: java:openjdk-8u91-jdk - working_dir: /app volumes: - ./customers-query-side-service/build/libs:/app - command: java -jar /app/customers-query-side-service.jar - ports: - - "8084:8080" links: - mongodb environment: - EVENTUATE_API_KEY_ID: - EVENTUATE_API_KEY_SECRET: - SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb + EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID} + EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET} mongodb: - image: mongo:3.0.4 - hostname: mongodb - command: mongod --smallfiles - ports: - - "27017:27017" + extends: + file: docker-compose-common.yml + service: mongodb diff --git a/java-spring/gradle.properties b/java-spring/gradle.properties index 8c03167..e93b4ed 100644 --- a/java-spring/gradle.properties +++ b/java-spring/gradle.properties @@ -5,6 +5,5 @@ eventuateMavenRepoUrl=http://mavenrepo.eventuate.io/release springBootVersion=1.3.5.RELEASE -eventuateClientVersion=0.8.0.RELEASE -eventuateLocalVersion=0.2.0.RELEASE - +eventuateClientVersion=0.10.0.RELEASE +eventuateLocalVersion=0.4.0.RELEASE diff --git a/java-spring/set-env.sh b/java-spring/set-env.sh new file mode 100644 index 0000000..f84392f --- /dev/null +++ b/java-spring/set-env.sh @@ -0,0 +1,21 @@ +if [ -z "$DOCKER_HOST_IP" ] ; then + if [ -z "$DOCKER_HOST" ] ; then + export DOCKER_HOST_IP=`hostname` + else + echo using ${DOCKER_HOST?} + XX=${DOCKER_HOST%\:*} + export DOCKER_HOST_IP=${XX#tcp\:\/\/} + fi +fi + +echo DOCKER_HOST_IP is $DOCKER_HOST_IP + +export SPRING_DATASOURCE_URL=jdbc:mysql://${DOCKER_HOST_IP}/eventuate +export SPRING_DATASOURCE_USERNAME=mysqluser +export SPRING_DATASOURCE_PASSWORD=mysqlpw +export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver +export EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS=$DOCKER_HOST_IP:9092 +export EVENTUATELOCAL_CDC_DB_USER_NAME=root +export EVENTUATELOCAL_CDC_DB_PASSWORD=rootpassword +export EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING=$DOCKER_HOST_IP:2181 +