fix(mongodb): downgrade the MongoDB service image to 4.4 and use the legacy mongo shell for container operations

This commit is contained in:
2026-03-16 13:05:47 +00:00
parent 7f6031f31a
commit 9ee8851d03
5 changed files with 18 additions and 12 deletions

View File

@@ -28,7 +28,7 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
getDefaultConfig(): IPlatformServiceConfig {
return {
image: 'mongo:7',
image: 'mongo:4.4',
port: 27017,
volumes: ['/var/lib/onebox/mongodb:/data/db'],
environment: {
@@ -165,7 +165,7 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
// This avoids network issues with overlay networks
const result = await this.oneboxRef.docker.execInContainer(
platformService.containerId,
['mongosh', '--eval', 'db.adminCommand("ping")', '--username', adminCreds.username, '--password', adminCreds.password, '--authenticationDatabase', 'admin', '--quiet']
['mongo', '--eval', 'db.adminCommand("ping")', '--username', adminCreds.username, '--password', adminCreds.password, '--authenticationDatabase', 'admin', '--quiet']
);
if (result.exitCode === 0) {
@@ -201,8 +201,8 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
const escapedPassword = password.replace(/'/g, "'\\''");
const escapedAdminPassword = adminCreds.password.replace(/'/g, "'\\''");
// Create database and user via mongosh inside the container
const mongoshScript = `
// Create database and user via mongo inside the container
const mongoScript = `
db = db.getSiblingDB('${dbName}');
db.createCollection('_onebox_init');
db.createUser({
@@ -216,12 +216,12 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
const result = await this.oneboxRef.docker.execInContainer(
platformService.containerId,
[
'mongosh',
'mongo',
'--username', adminCreds.username,
'--password', escapedAdminPassword,
'--authenticationDatabase', 'admin',
'--quiet',
'--eval', mongoshScript,
'--eval', mongoScript,
]
);
@@ -268,7 +268,7 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
logger.info(`Deprovisioning MongoDB database '${resource.resourceName}'...`);
const mongoshScript = `
const mongoScript = `
db = db.getSiblingDB('${resource.resourceName}');
try { db.dropUser('${credentials.username}'); } catch(e) { print('User drop failed: ' + e); }
db.dropDatabase();
@@ -278,12 +278,12 @@ export class MongoDBProvider extends BasePlatformServiceProvider {
const result = await this.oneboxRef.docker.execInContainer(
platformService.containerId,
[
'mongosh',
'mongo',
'--username', adminCreds.username,
'--password', escapedAdminPassword,
'--authenticationDatabase', 'admin',
'--quiet',
'--eval', mongoshScript,
'--eval', mongoScript,
]
);