diff --git a/docker/compose-utils.sh b/docker/compose-utils.sh index f45339eb92..c1963cc045 100755 --- a/docker/compose-utils.sh +++ b/docker/compose-utils.sh @@ -195,3 +195,35 @@ function checkFolders() { done < <(echo "$PERMISSION_LIST") return $EXIT_CODE } + +function composeVersion() { + #Checking whether "set -e" shell option should be restored after Compose version check + FLAG_SET=false + if [[ $SHELLOPTS =~ errexit ]]; then + set +e + FLAG_SET=true + fi + + #Checking Compose V1 availablity + docker-compose version >/dev/null 2>&1 + if [ $? -eq 0 ]; then status_v1=true; else status_v1=false; fi + + #Checking Compose V2 availablity + docker compose version >/dev/null 2>&1 + if [ $? -eq 0 ]; then status_v2=true; else status_v2=false; fi + + COMPOSE_VERSION="" + + if $status_v2 ; then + COMPOSE_VERSION="V2" + elif $status_v1 ; then + COMPOSE_VERSION="V1" + else + echo "Docker Compose plugin is not detected. Please check your environment." >&2 + exit 1 + fi + + echo $COMPOSE_VERSION + + if $FLAG_SET ; then set -e; fi +} diff --git a/docker/docker-compose.aws-sqs.yml b/docker/docker-compose.aws-sqs.yml index 331902851f..d6a542a340 100644 --- a/docker/docker-compose.aws-sqs.yml +++ b/docker/docker-compose.aws-sqs.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-js-executor: diff --git a/docker/docker-compose.cassandra.volumes.yml b/docker/docker-compose.cassandra.volumes.yml index 37880b44fa..4ee4760fb0 100644 --- a/docker/docker-compose.cassandra.volumes.yml +++ b/docker/docker-compose.cassandra.volumes.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: cassandra: diff --git a/docker/docker-compose.confluent.yml b/docker/docker-compose.confluent.yml index 077acdca98..e7eee83c3b 100644 --- a/docker/docker-compose.confluent.yml +++ b/docker/docker-compose.confluent.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-js-executor: diff --git a/docker/docker-compose.hybrid.yml b/docker/docker-compose.hybrid.yml index 12ea4cd099..2c84b41805 100644 --- a/docker/docker-compose.hybrid.yml +++ b/docker/docker-compose.hybrid.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: postgres: diff --git a/docker/docker-compose.kafka.yml b/docker/docker-compose.kafka.yml index e6fa0c489f..99b06d21fd 100644 --- a/docker/docker-compose.kafka.yml +++ b/docker/docker-compose.kafka.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: kafka: diff --git a/docker/docker-compose.postgres.volumes.yml b/docker/docker-compose.postgres.volumes.yml index caf78f23d7..51138a4d5b 100644 --- a/docker/docker-compose.postgres.volumes.yml +++ b/docker/docker-compose.postgres.volumes.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: postgres: diff --git a/docker/docker-compose.postgres.yml b/docker/docker-compose.postgres.yml index 8fe8e6f53d..f9c27c4743 100644 --- a/docker/docker-compose.postgres.yml +++ b/docker/docker-compose.postgres.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: postgres: diff --git a/docker/docker-compose.prometheus-grafana.yml b/docker/docker-compose.prometheus-grafana.yml index c31b25190e..af560fec89 100644 --- a/docker/docker-compose.prometheus-grafana.yml +++ b/docker/docker-compose.prometheus-grafana.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' volumes: prometheus_data: {} diff --git a/docker/docker-compose.pubsub.yml b/docker/docker-compose.pubsub.yml index 7c122d0835..8e046b24d3 100644 --- a/docker/docker-compose.pubsub.yml +++ b/docker/docker-compose.pubsub.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-js-executor: diff --git a/docker/docker-compose.rabbitmq.yml b/docker/docker-compose.rabbitmq.yml index 1f1cf1554c..fc3b8a7b1e 100644 --- a/docker/docker-compose.rabbitmq.yml +++ b/docker/docker-compose.rabbitmq.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-js-executor: diff --git a/docker/docker-compose.redis-cluster.volumes.yml b/docker/docker-compose.redis-cluster.volumes.yml index 2cf319bd21..03b29110e3 100644 --- a/docker/docker-compose.redis-cluster.volumes.yml +++ b/docker/docker-compose.redis-cluster.volumes.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: # Redis cluster diff --git a/docker/docker-compose.redis-cluster.yml b/docker/docker-compose.redis-cluster.yml index 9763b5d79a..766a22bfdd 100644 --- a/docker/docker-compose.redis-cluster.yml +++ b/docker/docker-compose.redis-cluster.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: # Redis cluster diff --git a/docker/docker-compose.redis.volumes.yml b/docker/docker-compose.redis.volumes.yml index 090aa441fe..c96da9a5ab 100644 --- a/docker/docker-compose.redis.volumes.yml +++ b/docker/docker-compose.redis.volumes.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: redis: diff --git a/docker/docker-compose.redis.yml b/docker/docker-compose.redis.yml index e53a974134..c1ec7c18a9 100644 --- a/docker/docker-compose.redis.yml +++ b/docker/docker-compose.redis.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: # Redis standalone diff --git a/docker/docker-compose.service-bus.yml b/docker/docker-compose.service-bus.yml index 6e39de0baa..ff099de444 100644 --- a/docker/docker-compose.service-bus.yml +++ b/docker/docker-compose.service-bus.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-js-executor: diff --git a/docker/docker-compose.volumes.yml b/docker/docker-compose.volumes.yml index 58269473e4..dffdcacd2a 100644 --- a/docker/docker-compose.volumes.yml +++ b/docker/docker-compose.volumes.yml @@ -14,7 +14,7 @@ # limitations under the License. # -version: '2.2' +version: '3.0' services: tb-core1: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 6ec410fcde..38b2b9b0f3 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -15,7 +15,7 @@ # -version: '2.2' +version: '3.0' services: zookeeper: @@ -30,7 +30,8 @@ services: tb-js-executor: restart: always image: "${DOCKER_REPO}/${JS_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" - scale: 10 + deploy: + replicas: 10 env_file: - tb-js-executor.env tb-core1: diff --git a/docker/docker-install-tb.sh b/docker/docker-install-tb.sh index 628b16e6ee..01eefeb4a8 100755 --- a/docker/docker-install-tb.sh +++ b/docker/docker-install-tb.sh @@ -41,6 +41,8 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? @@ -52,14 +54,39 @@ ADDITIONAL_STARTUP_SERVICES=$(additionalStartupServices) || exit $? checkFolders --create || exit $? if [ ! -z "${ADDITIONAL_STARTUP_SERVICES// }" ]; then - docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - up -d $ADDITIONAL_STARTUP_SERVICES + + COMPOSE_ARGS="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + up -d ${ADDITIONAL_STARTUP_SERVICES}" + + case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS + ;; + V1) + docker-compose $COMPOSE_ARGS + ;; + *) + # unknown option + ;; + esac fi -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=${loadDemo} \ - tb-core1 +COMPOSE_ARGS="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=${loadDemo} \ + tb-core1" + +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS + ;; + V1) + docker-compose $COMPOSE_ARGS + ;; + *) + # unknown option + ;; +esac diff --git a/docker/docker-remove-services.sh b/docker/docker-remove-services.sh index 769150c1f3..1e2a55f976 100755 --- a/docker/docker-remove-services.sh +++ b/docker/docker-remove-services.sh @@ -19,6 +19,8 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? @@ -27,6 +29,18 @@ ADDITIONAL_CACHE_ARGS=$(additionalComposeCacheArgs) || exit $? ADDITIONAL_COMPOSE_MONITORING_ARGS=$(additionalComposeMonitoringArgs) || exit $? -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS $ADDITIONAL_COMPOSE_MONITORING_ARGS \ - down -v +COMPOSE_ARGS="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} ${ADDITIONAL_COMPOSE_MONITORING_ARGS} \ + down -v" + +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS + ;; + V1) + docker-compose $COMPOSE_ARGS + ;; + *) + # unknown option + ;; +esac diff --git a/docker/docker-start-services.sh b/docker/docker-start-services.sh index 1a06946308..3603382b4d 100755 --- a/docker/docker-start-services.sh +++ b/docker/docker-start-services.sh @@ -19,6 +19,8 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? @@ -29,6 +31,18 @@ ADDITIONAL_COMPOSE_MONITORING_ARGS=$(additionalComposeMonitoringArgs) || exit $? checkFolders --create || exit $? -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS $ADDITIONAL_COMPOSE_MONITORING_ARGS \ - up -d +COMPOSE_ARGS="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} ${ADDITIONAL_COMPOSE_MONITORING_ARGS} \ + up -d" + +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS + ;; + V1) + docker-compose --compatibility $COMPOSE_ARGS + ;; + *) + # unknown option + ;; +esac diff --git a/docker/docker-stop-services.sh b/docker/docker-stop-services.sh index 5b09aea204..4edd755d43 100755 --- a/docker/docker-stop-services.sh +++ b/docker/docker-stop-services.sh @@ -19,6 +19,8 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? @@ -27,6 +29,18 @@ ADDITIONAL_CACHE_ARGS=$(additionalComposeCacheArgs) || exit $? ADDITIONAL_COMPOSE_MONITORING_ARGS=$(additionalComposeMonitoringArgs) || exit $? -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS $ADDITIONAL_COMPOSE_MONITORING_ARGS \ - stop +COMPOSE_ARGS="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} ${ADDITIONAL_COMPOSE_MONITORING_ARGS} \ + stop" + +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS + ;; + V1) + docker-compose $COMPOSE_ARGS + ;; + *) + # unknown option + ;; +esac diff --git a/docker/docker-update-service.sh b/docker/docker-update-service.sh index 027280635d..fe2e2b3ce2 100755 --- a/docker/docker-update-service.sh +++ b/docker/docker-update-service.sh @@ -19,15 +19,32 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? ADDITIONAL_CACHE_ARGS=$(additionalComposeCacheArgs) || exit $? -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - pull $@ -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - up -d --no-deps --build $@ +COMPOSE_ARGS_PULL="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + pull" + +COMPOSE_ARGS_BUILD="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + up -d --no-deps --build" + +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS_PULL $@ + docker compose $COMPOSE_ARGS_BUILD $@ + ;; + V1) + docker-compose $COMPOSE_ARGS_PULL $@ + docker-compose $COMPOSE_ARGS_BUILD $@ + ;; + *) + # unknown option + ;; +esac diff --git a/docker/docker-upgrade-tb.sh b/docker/docker-upgrade-tb.sh index 87dff9da15..18ce476d62 100755 --- a/docker/docker-upgrade-tb.sh +++ b/docker/docker-upgrade-tb.sh @@ -40,6 +40,8 @@ set -e source compose-utils.sh +COMPOSE_VERSION=$(composeVersion) || exit $? + ADDITIONAL_COMPOSE_QUEUE_ARGS=$(additionalComposeQueueArgs) || exit $? ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? @@ -50,16 +52,32 @@ ADDITIONAL_STARTUP_SERVICES=$(additionalStartupServices) || exit $? checkFolders --create || exit $? -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - pull \ - tb-core1 +COMPOSE_ARGS_PULL="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + pull \ + tb-core1" + +COMPOSE_ARGS_UP="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + up -d ${ADDITIONAL_STARTUP_SERVICES}" -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - up -d $ADDITIONAL_STARTUP_SERVICES +COMPOSE_ARGS_RUN="\ + -f docker-compose.yml ${ADDITIONAL_CACHE_ARGS} ${ADDITIONAL_COMPOSE_ARGS} ${ADDITIONAL_COMPOSE_QUEUE_ARGS} \ + run --no-deps --rm -e UPGRADE_TB=true -e FROM_VERSION=${fromVersion} \ + tb-core1" -docker-compose \ - -f docker-compose.yml $ADDITIONAL_CACHE_ARGS $ADDITIONAL_COMPOSE_ARGS $ADDITIONAL_COMPOSE_QUEUE_ARGS \ - run --no-deps --rm -e UPGRADE_TB=true -e FROM_VERSION=${fromVersion} \ - tb-core1 +case $COMPOSE_VERSION in + V2) + docker compose $COMPOSE_ARGS_PULL + docker compose $COMPOSE_ARGS_UP + docker compose $COMPOSE_ARGS_RUN + ;; + V1) + docker-compose $COMPOSE_ARGS_PULL + docker-compose $COMPOSE_ARGS_UP + docker-compose $COMPOSE_ARGS_RUN + ;; + *) + # unknown option + ;; +esac