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 @@
*
- * ⚠️ This annotation relies on Spring annotation which is an exception to the rule of not using Framework in core. + * ⚠️ This annotation relies on Spring annotations which is an exception to the rule of not using Framework in core. *
*- * ⚠️ Transactions only supported when using JDBC repositories. + * ⚠️ If UseCase uses legacy services, @Retryable will be applied twice, first on the service itself and then on the use case. *
* * @see https://gravitee.slab.com/posts/%E2%9A%92%EF%B8%8F-better-software-architecture-of-the-management-api-yxtcvazk @@ -50,5 +54,14 @@ @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Transactional(value = "graviteeTransactionManager", noRollbackFor = AbstractManagementException.class) +@Retryable( + retryFor = DataAccessException.class, + exceptionExpression = TransactionRetryableService.EXPRESSION, + maxAttemptsExpression = "${management.transaction.retry.maxAttempts:5}", + backoff = @Backoff( + delayExpression = "${management.transaction.retry.delayMs:100}", + maxDelayExpression = "${management.transaction.retry.maxDelayMs:500}" + ) +) public @interface UseCase { } diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/exceptions/TransactionRetryableService.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/exceptions/TransactionRetryableService.java new file mode 100644 index 00000000000..806180ee0fd --- /dev/null +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/exceptions/TransactionRetryableService.java @@ -0,0 +1,43 @@ +/* + * Copyright © 2015 The Gravitee team (http://gravitee.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.gravitee.rest.api.service.exceptions; + +import org.springframework.dao.DataAccessException; +import org.springframework.dao.NonTransientDataAccessException; +import org.springframework.dao.TransientDataAccessException; +import org.springframework.stereotype.Service; + +@Service +public class TransactionRetryableService { + + public static final String EXPRESSION = "@transactionRetryableService.shouldRetry(#root)"; + + public boolean shouldRetry(final DataAccessException ex) { + if (ex instanceof TransientDataAccessException) { + return true; + } + + if (ex instanceof NonTransientDataAccessException nonTransientDataAccessException) { + String message = nonTransientDataAccessException.getMessage(); + if (message == null) { + return false; + } + return message.contains("WriteConflict"); + } + + return false; + } +} diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/TransactionalService.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/TransactionalService.java index 8302e83723a..8fd9caa9362 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/TransactionalService.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/TransactionalService.java @@ -16,6 +16,12 @@ package io.gravitee.rest.api.service.impl; import io.gravitee.rest.api.service.exceptions.AbstractManagementException; +import io.gravitee.rest.api.service.exceptions.TransactionRetryableService; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Recover; +import org.springframework.retry.annotation.Retryable; import org.springframework.transaction.annotation.Transactional; /** @@ -23,4 +29,13 @@ * @author GraviteeSource Team */ @Transactional(value = "graviteeTransactionManager", noRollbackFor = AbstractManagementException.class) +@Retryable( + retryFor = DataAccessException.class, + exceptionExpression = TransactionRetryableService.EXPRESSION, + maxAttemptsExpression = "${management.transaction.retry.maxAttempts:5}", + backoff = @Backoff( + delayExpression = "${management.transaction.retry.delayMs:100}", + maxDelayExpression = "${management.transaction.retry.maxDelayMs:500}" + ) +) public class TransactionalService {} diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/spring/ServiceConfiguration.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/spring/ServiceConfiguration.java index cde1d221cc0..082f947c33c 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/spring/ServiceConfiguration.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/spring/ServiceConfiguration.java @@ -48,6 +48,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.*; import org.springframework.core.env.Environment; +import org.springframework.retry.annotation.EnableRetry; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -59,6 +60,7 @@ @Configuration @ComponentScan(basePackages = { "io.gravitee.rest.api.service" }) @EnableTransactionManagement +@EnableRetry @Import( { FetcherConfigurationConfiguration.class, diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml b/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml index 4469cc6b513..1b71a3c82de 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml @@ -109,12 +109,20 @@ http: # For more information about MongoDB configuration, please have a look to: # - http://mongodb.github.io/mongo-java-driver/4.1/apidocs/mongodb-driver-core/com/mongodb/MongoClientSettings.Builder.html management: +# Override configuration for retryable exceptions (transient) such as transaction conflict. +# transaction: +# retry: +# maxAttempts: 5 +# delayMs: 100 +# maxDelayMs: 500 + type: mongodb # repository type mongodb: # mongodb repository # prefix: # collections prefix dbname: ${ds.mongodb.dbname} # mongodb name (default gravitee) host: ${ds.mongodb.host} # mongodb host (default localhost) port: ${ds.mongodb.port} # mongodb port (default 27017) +# transactional: true # whether to enable transaction or not, true by default ## Client settings # description: # mongodb description (default gravitee.io) diff --git a/pom.xml b/pom.xml index b3407e4931b..8acbd1f60d5 100644 --- a/pom.xml +++ b/pom.xml @@ -134,7 +134,9 @@