Fix: Rename Docker image for gateway service and reformat sqlite-config.js for consistency
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Successful in 12m14s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Successful in 9m25s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 29m52s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 1m57s

This commit is contained in:
2026-03-04 17:57:31 +01:00
parent db2b4a4027
commit e6aa22acdb
2 changed files with 52 additions and 50 deletions
@@ -19,28 +19,28 @@ config.resolve.fallback.crypto = false;
// 2. Resolve sqlite3 paths
let sqliteBaseDir;
try {
const packagePath = path.dirname(require.resolve('@sqlite.org/sqlite-wasm/package.json'));
sqliteBaseDir = path.join(packagePath, 'sqlite-wasm/jswasm');
const packagePath = path.dirname(require.resolve('@sqlite.org/sqlite-wasm/package.json'));
sqliteBaseDir = path.join(packagePath, 'sqlite-wasm/jswasm');
} catch (e) {
console.warn("Could not resolve @sqlite.org/sqlite-wasm path automatically. Using fallback path.");
sqliteBaseDir = path.resolve(__dirname, '../../../../../../node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm');
console.warn("Could not resolve @sqlite.org/sqlite-wasm path automatically. Using fallback path.");
sqliteBaseDir = path.resolve(__dirname, '../../../../../../node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm');
}
// 3. Copy ALL sqlite3 assets (wasm, js, and auxiliary workers)
const copyPatterns = [];
if (fs.existsSync(sqliteBaseDir)) {
console.log("Copying sqlite3 assets from:", sqliteBaseDir);
copyPatterns.push({
from: sqliteBaseDir,
to: '.', // Copy to root of dist
globOptions: {
ignore: ['**/package.json']
},
noErrorOnMissing: true
});
console.log("Copying sqlite3 assets from:", sqliteBaseDir);
copyPatterns.push({
from: sqliteBaseDir,
to: '.', // Copy to root of dist
globOptions: {
ignore: ['**/package.json']
},
noErrorOnMissing: true
});
} else {
console.error("ERROR: sqlite3 base directory does not exist:", sqliteBaseDir);
console.error("ERROR: sqlite3 base directory does not exist:", sqliteBaseDir);
}
// 4. Copy sqlite.worker.js from source
@@ -60,33 +60,33 @@ const pathC = path.resolve(__dirname, '../../../../core/local-db/src/jsMain/reso
let workerSourcePath = null;
if (fs.existsSync(pathA)) {
workerSourcePath = pathA;
console.log("Found sqlite.worker.js at (Strategy A):", pathA);
workerSourcePath = pathA;
console.log("Found sqlite.worker.js at (Strategy A):", pathA);
} else if (fs.existsSync(pathB)) {
workerSourcePath = pathB;
console.log("Found sqlite.worker.js at (Strategy B):", pathB);
workerSourcePath = pathB;
console.log("Found sqlite.worker.js at (Strategy B):", pathB);
} else if (fs.existsSync(pathC)) {
workerSourcePath = pathC;
console.log("Found sqlite.worker.js at (Strategy C):", pathC);
workerSourcePath = pathC;
console.log("Found sqlite.worker.js at (Strategy C):", pathC);
} else {
console.error("ERROR: Could not find sqlite.worker.js in any expected location!");
console.error("Checked A:", pathA);
console.error("Checked B:", pathB);
console.error("Checked C:", pathC);
console.error("ERROR: Could not find sqlite.worker.js in any expected location!");
console.error("Checked A:", pathA);
console.error("Checked B:", pathB);
console.error("Checked C:", pathC);
}
if (workerSourcePath) {
copyPatterns.push({
from: workerSourcePath,
to: 'sqlite.worker.js',
noErrorOnMissing: true
});
copyPatterns.push({
from: workerSourcePath,
to: 'sqlite.worker.js',
noErrorOnMissing: true
});
}
config.plugins.push(
new CopyWebpackPlugin({
patterns: copyPatterns
})
new CopyWebpackPlugin({
patterns: copyPatterns
})
);
// 5. Alias sqlite3.wasm (still needed for some internal checks maybe)
@@ -103,15 +103,15 @@ config.module.rules = config.module.rules || [];
// Treat Skiko WASM as resource to avoid parsing errors
config.module.rules.push({
test: /skiko\.wasm$/,
type: 'asset/resource'
test: /skiko\.wasm$/,
type: 'asset/resource'
});
// Treat other WASM as async (default)
config.module.rules.push({
test: /\.wasm$/,
exclude: /skiko\.wasm$/,
type: 'webassembly/async'
test: /\.wasm$/,
exclude: /skiko\.wasm$/,
type: 'webassembly/async'
});
// 7. Ignore warnings
@@ -120,28 +120,30 @@ config.ignoreWarnings.push(/Critical dependency: the request of a dependency is
// 8. Fix for "webpackEmptyContext" in sqlite3.mjs
config.plugins.push(
new webpack.ContextReplacementPlugin(
/@sqlite\.org\/sqlite-wasm/,
(data) => {
delete data.dependencies;
return data;
}
)
new webpack.ContextReplacementPlugin(
/@sqlite\.org\/sqlite-wasm/,
(data) => {
delete data.dependencies;
return data;
}
)
);
// 9. MIME types
config.devServer = config.devServer || {};
config.devServer.devMiddleware = config.devServer.devMiddleware || {};
config.devServer.devMiddleware.mimeTypes = {
'application/wasm': ['wasm'],
'application/javascript': ['js']
'application/wasm': ['wasm'],
'application/javascript': ['js']
};
// 10. OPTIMIZATION: Disable minification to prevent Terser crashes with SQLite WASM
// Since the app is mostly WASM-based, JS minification is not critical.
// 10. OPTIMIZATION: Aggressively disable ALL minimizers
// This is the ONLY stable way to prevent the Terser crash with SQLite-WASM
// in Kotlin/JS Production builds.
if (config.optimization) {
console.log("SQLite Config: Disabling minification to prevent Terser errors.");
console.log("SQLite Config: Aggressively removing minimizers to prevent Terser errors.");
config.optimization.minimize = false;
config.optimization.minimizer = []; // Das hier ist das entscheidende "Brecheisen"
}
/*// 10. OPTIMIZATION: Exclude SQLite workers from parsing and minification