From 2a764c6646fc1f69e72da670b6ab4959bb5426b0 Mon Sep 17 00:00:00 2001 From: Mark Allen <3417310+maallen@users.noreply.github.com> Date: Mon, 28 Aug 2023 13:29:28 +0100 Subject: [PATCH] Added docker-compose maven plugin to start/stop api-worker cluster locally --- docker/docker-compose-api-worker.yml | 159 +++++++++++++++++---------- pom.xml | 30 +++++ 2 files changed, 128 insertions(+), 61 deletions(-) diff --git a/docker/docker-compose-api-worker.yml b/docker/docker-compose-api-worker.yml index af4e99f104..d22a9a1f68 100644 --- a/docker/docker-compose-api-worker.yml +++ b/docker/docker-compose-api-worker.yml @@ -19,10 +19,10 @@ services: - --collation-server=utf8mb4_bin - --max-connections=1000 - --log_error_verbosity=2 - worker: + api: deploy: mode: replicated - replicas: 2 + replicas: 1 endpoint_mode: vip resources: limits: @@ -39,45 +39,65 @@ services: depends_on: db: condition: service_healthy - api: - condition: service_healthy build: dockerfile: docker/Dockerfile-bk8 context: ../ + image: mojito:latest + pull_policy: never links: - db + ports: + - "8080:8080" restart: always environment: SPRING_APPLICATION_JSON: '{ - "spring.flyway.enabled": "true", - "l10n.flyway.clean" : "false", - "spring.jpa.database-platform" : "org.hibernate.dialect.MySQLDialect", - "spring.jpa.hibernate.ddl-auto" : "none", - "spring.datasource.url" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", - "spring.datasource.username" : "mojito", - "spring.datasource.password" : "ChangeMe", - "spring.datasource.driverClassName" : "com.mysql.cj.jdbc.Driver", - "spring.jpa.defer-datasource-initialization" : "false", - "l10n.org.quartz.scheduler.enabled" : "true", - "l10n.org.quartz.jobStore.useProperties" : "true", - "l10n.org.quartz.scheduler.instanceId" : "AUTO", - "l10n.org.quartz.jobStore.isClustered" : "true", - "l10n.org.quartz.threadPool.threadCount" : "10", - "l10n.org.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", - "l10n.org.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", - "l10n.org.quartz.jobStore.dataSource" : "myDS", - "l10n.org.quartz.dataSource.myDS.provider" : "hikaricp", - "l10n.org.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", - "l10n.org.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", - "l10n.org.quartz.dataSource.myDS.user" : "mojito", - "l10n.org.quartz.dataSource.myDS.password" : "ChangeMe", - "l10n.org.quartz.dataSource.myDS.maxConnections" : "12", - "l10n.org.quartz.dataSource.myDS.validationQuery" : "select 1" - }' - api: + "spring.flyway.enabled": "true", + "l10n.flyway.clean" : "false", + "spring.jpa.database-platform" : "org.hibernate.dialect.MySQLDialect", + "spring.jpa.hibernate.ddl-auto" : "none", + "spring.datasource.url" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "spring.datasource.username" : "mojito", + "spring.datasource.password" : "ChangeMe", + "spring.datasource.driverClassName" : "com.mysql.cj.jdbc.Driver", + "spring.jpa.defer-datasource-initialization" : "false", + "l10n.org.quartz.scheduler.enabled" : "false", + "l10n.org.multi-quartz.enabled" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.useProperties" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.scheduler.instanceId" : "AUTO", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.isClustered" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.threadPool.threadCount" : 10, + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.dataSource" : "myDS", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.provider" : "hikaricp", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.user" : "mojito", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.password" : "ChangeMe", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.maxConnections" : 12, + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.validationQuery" : "select 1", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.useProperties" : "true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.scheduler.instanceId" : "AUTO", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.isClustered" : "true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.threadPool.threadCount" : 5, + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.dataSource" : "myDS", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.provider" : "hikaricp", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.user" : "mojito", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.password" : "ChangeMe", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.maxConnections" : 12, + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.validationQuery" : "select 1", + "l10n.assetExtraction.quartz.schedulerName" : "lowPriority", + "logging.level.com.box.l10n.mojito.quartz.QuartzPollableTaskScheduler" : "DEBUG", + "logging.level.com.box.l10n.mojito.service.repository.statistics.RepositoryStatisticsJob" : "DEBUG" + }' + worker: deploy: mode: replicated - replicas: 1 + replicas: 2 endpoint_mode: vip resources: limits: @@ -94,38 +114,55 @@ services: depends_on: db: condition: service_healthy - build: - dockerfile: docker/Dockerfile-bk8 - context: ../ + api: + condition: service_healthy + image: mojito:latest + pull_policy: never links: - db - ports: - - "8080:8080" restart: always environment: SPRING_APPLICATION_JSON: '{ - "spring.flyway.enabled": "true", - "l10n.flyway.clean" : "false", - "spring.jpa.database-platform" : "org.hibernate.dialect.MySQLDialect", - "spring.jpa.hibernate.ddl-auto" : "none", - "spring.datasource.url" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", - "spring.datasource.username" : "mojito", - "spring.datasource.password" : "ChangeMe", - "spring.datasource.driverClassName" : "com.mysql.cj.jdbc.Driver", - "spring.jpa.defer-datasource-initialization" : "false", - "l10n.org.quartz.scheduler.enabled" : "false", - "l10n.org.quartz.jobStore.useProperties" : "true", - "l10n.org.quartz.scheduler.instanceId" : "AUTO", - "l10n.org.quartz.jobStore.isClustered" : "true", - "l10n.org.quartz.threadPool.threadCount" : "10", - "l10n.org.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", - "l10n.org.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", - "l10n.org.quartz.jobStore.dataSource" : "myDS", - "l10n.org.quartz.dataSource.myDS.provider" : "hikaricp", - "l10n.org.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", - "l10n.org.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", - "l10n.org.quartz.dataSource.myDS.user" : "mojito", - "l10n.org.quartz.dataSource.myDS.password" : "ChangeMe", - "l10n.org.quartz.dataSource.myDS.maxConnections" : "12", - "l10n.org.quartz.dataSource.myDS.validationQuery" : "select 1" - }' + "spring.flyway.enabled": "true", + "l10n.flyway.clean" : "false", + "spring.jpa.database-platform" : "org.hibernate.dialect.MySQLDialect", + "spring.jpa.hibernate.ddl-auto" : "none", + "spring.datasource.url" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "spring.datasource.username" : "mojito", + "spring.datasource.password" : "ChangeMe", + "spring.datasource.driverClassName" : "com.mysql.cj.jdbc.Driver", + "spring.jpa.defer-datasource-initialization" : "false", + "l10n.org.quartz.scheduler.enabled" : "true", + "l10n.org.multi-quartz.enabled" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.useProperties" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.scheduler.instanceId" : "AUTO", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.isClustered" : "true", + "l10n.org.multi-quartz.schedulers.default.quartz.threadPool.threadCount" : 10, + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", + "l10n.org.multi-quartz.schedulers.default.quartz.jobStore.dataSource" : "myDS", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.provider" : "hikaricp", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.user" : "mojito", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.password" : "ChangeMe", + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.maxConnections" : 12, + "l10n.org.multi-quartz.schedulers.default.quartz.dataSource.myDS.validationQuery" : "select 1", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.useProperties" : "true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.scheduler.instanceId" : "AUTO", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.isClustered" : "true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.threadPool.threadCount" : 5, + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.class" : "org.quartz.impl.jdbcjobstore.JobStoreTX", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.driverDelegateClass" : "org.quartz.impl.jdbcjobstore.StdJDBCDelegate", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.jobStore.dataSource" : "myDS", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.provider" : "hikaricp", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.driver" : "com.mysql.jdbc.Driver", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.URL" : "jdbc:mysql://db:3306/mojito?characterEncoding=UTF-8&useUnicode=true", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.user" : "mojito", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.password" : "ChangeMe", + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.maxConnections" : 12, + "l10n.org.multi-quartz.schedulers.lowPriority.quartz.dataSource.myDS.validationQuery" : "select 1", + "l10n.assetExtraction.quartz.schedulerName" : "lowPriority", + "logging.level.com.box.l10n.mojito.quartz.QuartzPollableTaskScheduler" : "DEBUG", + "logging.level.com.box.l10n.mojito.service.repository.statistics.RepositoryStatisticsJob" : "DEBUG" + }' \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6c0d98727d..57b16d0fa7 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,8 @@ 0.10.5 1.313 64.2 + true + true @@ -150,6 +152,34 @@ + + com.dkanejs.maven.plugins + docker-compose-maven-plugin + 4.0.0 + + + ./docker/docker-compose-api-worker.yml + + true + ${docker.compose.detached.mode} + ${docker.compose.remove.volumes} + true + + + + api-worker-cluster-up + + up + + + + api-worker-cluster-down + + down + + + +