diff --git a/docker/quick-setup/consul-service-discovery/docker-compose.yml b/docker/quick-setup/consul-service-discovery/docker-compose.yml index 4078303110b..524988c34bc 100644 --- a/docker/quick-setup/consul-service-discovery/docker-compose.yml +++ b/docker/quick-setup/consul-service-discovery/docker-compose.yml @@ -45,14 +45,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -98,8 +101,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage @@ -123,7 +126,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/ee-with-alert-engine/docker-compose.yml b/docker/quick-setup/ee-with-alert-engine/docker-compose.yml index 31c19d10df5..aa66ab02deb 100644 --- a/docker/quick-setup/ee-with-alert-engine/docker-compose.yml +++ b/docker/quick-setup/ee-with-alert-engine/docker-compose.yml @@ -33,14 +33,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -98,8 +101,8 @@ services: - ./.license:/opt/graviteeio-gateway/license - ./.plugins:/opt/graviteeio-gateway/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext @@ -132,7 +135,7 @@ services: - ./.license:/opt/graviteeio-management-api/license - ./.plugins:/opt/graviteeio-management-api/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext diff --git a/docker/quick-setup/eureka-service-discovery/docker-compose.yml b/docker/quick-setup/eureka-service-discovery/docker-compose.yml index e20a5b87175..7ac20086e2b 100644 --- a/docker/quick-setup/eureka-service-discovery/docker-compose.yml +++ b/docker/quick-setup/eureka-service-discovery/docker-compose.yml @@ -61,9 +61,17 @@ services: image: mongo:${MONGODB_VERSION:-4.0.28} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb + healthcheck: + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -106,7 +114,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.plugins:/opt/graviteeio-management-api/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext @@ -129,8 +137,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.plugins:/opt/graviteeio-gateway/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext diff --git a/docker/quick-setup/gateway-http-bridge-repository/.env b/docker/quick-setup/gateway-http-bridge-repository/.env index 22f6e6c1fbb..b0fb9425f74 100644 --- a/docker/quick-setup/gateway-http-bridge-repository/.env +++ b/docker/quick-setup/gateway-http-bridge-repository/.env @@ -1,2 +1,2 @@ APIM_VERSION=nightly -MONGODB_URL=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 \ No newline at end of file +MONGODB_URL=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 \ No newline at end of file diff --git a/docker/quick-setup/gateway-http-bridge-repository/docker-compose.yml b/docker/quick-setup/gateway-http-bridge-repository/docker-compose.yml index 44e2a748c3e..4521519d26f 100644 --- a/docker/quick-setup/gateway-http-bridge-repository/docker-compose.yml +++ b/docker/quick-setup/gateway-http-bridge-repository/docker-compose.yml @@ -31,14 +31,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage diff --git a/docker/quick-setup/https-gateway/docker-compose.yml b/docker/quick-setup/https-gateway/docker-compose.yml index 235fcdbabe7..5257737e4d2 100644 --- a/docker/quick-setup/https-gateway/docker-compose.yml +++ b/docker/quick-setup/https-gateway/docker-compose.yml @@ -31,14 +31,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -85,8 +88,8 @@ services: - ./.certificates:/opt/graviteeio-gateway/certificates - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_http_secured=true - gravitee_http_ssl_clientAuth=request @@ -118,7 +121,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/https-nginx/docker-compose.yml b/docker/quick-setup/https-nginx/docker-compose.yml index 5c21fd5f88e..83eb158d70a 100644 --- a/docker/quick-setup/https-nginx/docker-compose.yml +++ b/docker/quick-setup/https-nginx/docker-compose.yml @@ -45,15 +45,17 @@ services: mongodb: image: mongo:${MONGODB_VERSION:-6.0} restart: always - command: [ "--quiet", "--logpath", "/dev/null" ] + command: ["--replSet", "rs0", "--quiet", "--logpath", "/dev/null" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -97,8 +99,8 @@ services: - ./.certificates:/opt/graviteeio-gateway/certificates - ./.plugins:/opt/graviteeio-gateway/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext @@ -130,7 +132,7 @@ services: - ./.license:/opt/graviteeio-management-api/license - ./.plugins:/opt/graviteeio-management-api/plugins-ext environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext diff --git a/docker/quick-setup/keycloak/docker-compose.yml b/docker/quick-setup/keycloak/docker-compose.yml index 6680716d652..66236939ea6 100644 --- a/docker/quick-setup/keycloak/docker-compose.yml +++ b/docker/quick-setup/keycloak/docker-compose.yml @@ -63,14 +63,17 @@ services: mongodb: image: mongo:${MONGODB_VERSION:-6.0} restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -119,8 +122,8 @@ services: - ./.plugins:/opt/graviteeio-gateway/plugins-ext - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext @@ -146,7 +149,7 @@ services: - ./.plugins:/opt/graviteeio-management-api/plugins-ext - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext diff --git a/docker/quick-setup/kibana/docker-compose.yml b/docker/quick-setup/kibana/docker-compose.yml index c1a364ad193..1ac1554ff3b 100644 --- a/docker/quick-setup/kibana/docker-compose.yml +++ b/docker/quick-setup/kibana/docker-compose.yml @@ -32,14 +32,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -101,8 +104,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage @@ -126,7 +129,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/mongodb/docker-compose.yml b/docker/quick-setup/mongodb/docker-compose.yml index 8c69f8dde0e..68fbfe59188 100644 --- a/docker/quick-setup/mongodb/docker-compose.yml +++ b/docker/quick-setup/mongodb/docker-compose.yml @@ -33,14 +33,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -86,8 +89,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage @@ -111,7 +114,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_email_enabled=true - gravitee_email_host=mailhog diff --git a/docker/quick-setup/native-kafka/docker-compose.yml b/docker/quick-setup/native-kafka/docker-compose.yml index 22074005392..88c155a5f5e 100644 --- a/docker/quick-setup/native-kafka/docker-compose.yml +++ b/docker/quick-setup/native-kafka/docker-compose.yml @@ -38,14 +38,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -95,8 +98,8 @@ services: # - ./.hosts:/etc/hosts - ./.config/logback.xml:/opt/graviteeio-gateway/config/logback.xml environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 # Enable Kafka - gravitee_kafka_enabled=true @@ -136,7 +139,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_email_enabled=true - gravitee_email_host=mailhog diff --git a/docker/quick-setup/nginx/docker-compose.yml b/docker/quick-setup/nginx/docker-compose.yml index 032da23f998..4b71d46c2c3 100644 --- a/docker/quick-setup/nginx/docker-compose.yml +++ b/docker/quick-setup/nginx/docker-compose.yml @@ -44,14 +44,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -95,8 +98,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage @@ -118,7 +121,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - console_ui_url=http://localhost/console - console_api_url=http://localhost/management diff --git a/docker/quick-setup/opensearch/docker-compose.yml b/docker/quick-setup/opensearch/docker-compose.yml index 2cbb7638980..be1d9265983 100644 --- a/docker/quick-setup/opensearch/docker-compose.yml +++ b/docker/quick-setup/opensearch/docker-compose.yml @@ -31,9 +31,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb + healthcheck: + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -88,8 +96,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://opensearch:9200 - gravitee_analytics_elasticsearch_security_username=admin - gravitee_analytics_elasticsearch_security_password=admin @@ -113,7 +121,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://opensearch:9200 - gravitee_analytics_elasticsearch_security_username=admin - gravitee_analytics_elasticsearch_security_password=admin diff --git a/docker/quick-setup/opentelemetry-jaeger-tls/docker-compose.yml b/docker/quick-setup/opentelemetry-jaeger-tls/docker-compose.yml index 76182c0f615..fd1d09f3afe 100644 --- a/docker/quick-setup/opentelemetry-jaeger-tls/docker-compose.yml +++ b/docker/quick-setup/opentelemetry-jaeger-tls/docker-compose.yml @@ -112,8 +112,8 @@ services: - ./.license:/opt/graviteeio-gateway/license - ./ssl:/opt/graviteeio-gateway/certs environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_plugins_path_0=$${gravitee.home}/plugins - gravitee_plugins_path_1=$${gravitee.home}/plugins-ext @@ -161,7 +161,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/opentelemetry-jaeger/docker-compose.yml b/docker/quick-setup/opentelemetry-jaeger/docker-compose.yml index 3c3c2b6334e..7a6e902ee5d 100644 --- a/docker/quick-setup/opentelemetry-jaeger/docker-compose.yml +++ b/docker/quick-setup/opentelemetry-jaeger/docker-compose.yml @@ -111,8 +111,8 @@ services: - ./.plugins:/opt/graviteeio-gateway/plugins-ext - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_services_opentelemetry_enabled=true - gravitee_services_opentelemetry_exporter_endpoint=http://jaeger:4317 - gravitee_services_opentelemetry_exporter_protocol=grpc @@ -142,7 +142,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/prometheus/docker-compose.yml b/docker/quick-setup/prometheus/docker-compose.yml index dd8f8bf450e..b0ae17c39ec 100644 --- a/docker/quick-setup/prometheus/docker-compose.yml +++ b/docker/quick-setup/prometheus/docker-compose.yml @@ -33,14 +33,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -101,8 +104,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_services_core_http_host=0.0.0.0 - gravitee_services_metrics_enabled=true @@ -130,7 +133,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/redis-rate-limit/docker-compose.yml b/docker/quick-setup/redis-rate-limit/docker-compose.yml index e9dc86d9148..44488df2bb5 100644 --- a/docker/quick-setup/redis-rate-limit/docker-compose.yml +++ b/docker/quick-setup/redis-rate-limit/docker-compose.yml @@ -33,14 +33,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -113,7 +116,7 @@ services: - ./.plugins:/opt/graviteeio-gateway/plugins-ext - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_ratelimit_type=redis - gravitee_ratelimit_redis_host=redis-rate-limit - gravitee_ratelimit_redis_port=6379 @@ -143,7 +146,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/systemProxy/docker-compose.yml b/docker/quick-setup/systemProxy/docker-compose.yml index 020cea9f26e..ff5a0018211 100644 --- a/docker/quick-setup/systemProxy/docker-compose.yml +++ b/docker/quick-setup/systemProxy/docker-compose.yml @@ -47,14 +47,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always + command: ["--replSet", "rs0" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -100,8 +103,8 @@ services: - ./.logs/apim-gateway:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage @@ -125,7 +128,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_email_enabled=true - gravitee_email_host=mailhog diff --git a/docker/quick-setup/tags-internal-external/docker-compose.yml b/docker/quick-setup/tags-internal-external/docker-compose.yml index 26e2777cd8d..585b9981400 100644 --- a/docker/quick-setup/tags-internal-external/docker-compose.yml +++ b/docker/quick-setup/tags-internal-external/docker-compose.yml @@ -84,8 +84,8 @@ services: - ./.logs/apim-gateway-internal:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - tags=internal networks: @@ -107,8 +107,8 @@ services: - ./.logs/apim-gateway-external:/opt/graviteeio-gateway/logs - ./.license:/opt/graviteeio-gateway/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - tags=external networks: @@ -133,7 +133,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 networks: - storage diff --git a/docker/quick-setup/tcp/docker-compose.yml b/docker/quick-setup/tcp/docker-compose.yml index d645320ac8f..2131b297912 100644 --- a/docker/quick-setup/tcp/docker-compose.yml +++ b/docker/quick-setup/tcp/docker-compose.yml @@ -33,15 +33,17 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gio_apim_mongodb restart: always - command: [ "--quiet", "--logpath", "/dev/null" ] + command: ["--replSet", "rs0", "--quiet", "--logpath", "/dev/null" ] volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 - interval: 5s - timeout: 3s - retries: 10 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet + interval: 2s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage @@ -89,8 +91,8 @@ services: - ./.license:/opt/graviteeio-gateway/license - ./.resources:/opt/graviteeio-gateway/resources environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_tcp_enabled=true - gravitee_tcp_host=0.0.0.0 @@ -119,8 +121,8 @@ services: - ./.license:/opt/graviteeio-gateway/license - ./.certificates:/opt/graviteeio-gateway/certificates environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200 - tags=secured - gravitee_http_secured=true @@ -152,7 +154,7 @@ services: - ./.logs/apim-management-api:/opt/graviteeio-management-api/logs - ./.license:/opt/graviteeio-management-api/license environment: - - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?replicaSet=rs0&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200 - gravitee_email_enabled=true - gravitee_email_host=mailhog diff --git a/gravitee-apim-bom/pom.xml b/gravitee-apim-bom/pom.xml index a607903120b..bd9f424bd06 100644 --- a/gravitee-apim-bom/pom.xml +++ b/gravitee-apim-bom/pom.xml @@ -29,7 +29,6 @@ pom Gravitee.io APIM - BOM - @@ -721,6 +720,16 @@ + + org.springframework.retry + spring-retry + ${spring-retry.version} + + + org.springframework + spring-aspects + ${spring-aspects.version} + javax.servlet javax.servlet-api diff --git a/gravitee-apim-e2e/docker/common/docker-compose-mongo.yml b/gravitee-apim-e2e/docker/common/docker-compose-mongo.yml index be802347105..2211f7bddd4 100644 --- a/gravitee-apim-e2e/docker/common/docker-compose-mongo.yml +++ b/gravitee-apim-e2e/docker/common/docker-compose-mongo.yml @@ -24,23 +24,26 @@ services: image: mongo:${MONGODB_VERSION:-6.0} container_name: gravitee-apim-e2e-mongodb restart: always + command: ["--replSet", "rs0" ] ports: - "30017:27017" volumes: - data-mongo:/data/db - ./.logs/apim-mongodb:/var/log/mongodb healthcheck: - test: mongosh --eval 'db.runCommand({serverStatus:1}).ok' --quiet | grep 1 + test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'database:27017'}]}) }" | mongosh --port 27017 --quiet interval: 2s - timeout: 10s - retries: 5 + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 networks: - storage management_api: environment: - gravitee_license_key=${GRAVITEE_LICENSE} - - gravitee_management_mongodb_uri=mongodb://database:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 + - gravitee_management_mongodb_uri=mongodb://database:27017/gravitee?replicaSet=rs0&w=majority&serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000 gateway: environment: diff --git a/gravitee-apim-repository/gravitee-apim-repository-mongodb/README.md b/gravitee-apim-repository/gravitee-apim-repository-mongodb/README.md index cdc927a4b7c..5466dc9f0b1 100644 --- a/gravitee-apim-repository/gravitee-apim-repository-mongodb/README.md +++ b/gravitee-apim-repository/gravitee-apim-repository-mongodb/README.md @@ -45,6 +45,7 @@ repository.mongodb options : | port | 9200 | | username | | | password | | +| transactional | true | | connectionPerHost | | | connectTimeout | | | writeConcern | 1 | @@ -69,4 +70,10 @@ repository.mongodb options : | keystore | | | keyPassword | | -NB: writeConcern possible value are 1,2,3... (the number of node) or 'majority' \ No newline at end of file +NB: writeConcern possible value are 1,2,3... (the number of node) or 'majority' + +### Enable transaction management + +If you are running a standalone server with data intended for production, you should first convert the standalone server into a replica set and enable transactional on mongodb repository. + +To do so, you can follow the official documentation available here: [Convert a Standalone to a Replica Set](https://www.mongodb.com/docs/manual/tutorial/convert-standalone-to-replica-set/). \ No newline at end of file diff --git a/gravitee-apim-repository/gravitee-apim-repository-mongodb/src/main/java/io/gravitee/repository/mongodb/common/AbstractRepositoryConfiguration.java b/gravitee-apim-repository/gravitee-apim-repository-mongodb/src/main/java/io/gravitee/repository/mongodb/common/AbstractRepositoryConfiguration.java index ae2f2b10db8..3373dcf3ea5 100644 --- a/gravitee-apim-repository/gravitee-apim-repository-mongodb/src/main/java/io/gravitee/repository/mongodb/common/AbstractRepositoryConfiguration.java +++ b/gravitee-apim-repository/gravitee-apim-repository-mongodb/src/main/java/io/gravitee/repository/mongodb/common/AbstractRepositoryConfiguration.java @@ -34,6 +34,8 @@ import org.springframework.core.env.Environment; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.data.annotation.Persistent; +import org.springframework.data.mongodb.MongoDatabaseFactory; +import org.springframework.data.mongodb.MongoTransactionManager; import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.lang.NonNull; @@ -57,7 +59,15 @@ protected AbstractRepositoryConfiguration(Environment environment) { @Override public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException { final ConfigurableListableBeanFactory beanFactory = getConfigurableApplicationContext(applicationContext).getBeanFactory(); - beanFactory.registerSingleton("graviteeTransactionManager", new NoTransactionManager()); + boolean isTransactional = environment.getProperty("management.mongodb.transactional", Boolean.class, true); + if (isTransactional) { + beanFactory.registerSingleton( + "graviteeTransactionManager", + new MongoTransactionManager(applicationContext.getBean(MongoDatabaseFactory.class)) + ); + } else { + beanFactory.registerSingleton("graviteeTransactionManager", new NoTransactionManager()); + } this.applicationContext = applicationContext; } diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/pom.xml b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/pom.xml index 315e44dd23f..3957a333d84 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/pom.xml +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/pom.xml @@ -245,26 +245,34 @@ org.springframework - spring-context-support - - - org.springframework - spring-tx - - - org.springframework.security - spring-security-core - - - commons-io - commons-io - + spring-context-support + + + org.springframework + spring-tx + + + org.springframework.security + spring-security-core + + + org.springframework.retry + spring-retry + + + org.springframework + spring-aspects + + + commons-io + commons-io + - - org.eclipse.angus - angus-mail - - + + org.eclipse.angus + angus-mail + + jakarta.activation jakarta.activation-api @@ -370,7 +378,6 @@ wiremock-standalone test - diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/UseCase.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/UseCase.java index a553e147cf3..345dfbff436 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/UseCase.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/UseCase.java @@ -16,10 +16,14 @@ package io.gravitee.apim.core; import io.gravitee.rest.api.service.exceptions.AbstractManagementException; +import io.gravitee.rest.api.service.exceptions.TransactionRetryableService; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.springframework.dao.DataAccessException; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Retryable; import org.springframework.transaction.annotation.Transactional; /** @@ -37,10 +41,10 @@ *