diff --git a/apps/browser-demos/lib/init/index.ts b/apps/browser-demos/lib/init/index.ts index 166579e3f0..45d42b07ef 100644 --- a/apps/browser-demos/lib/init/index.ts +++ b/apps/browser-demos/lib/init/index.ts @@ -23,6 +23,3 @@ export { COREUTILS_NAMES } from "./shell-binaries"; // Service worker bridge export { initServiceWorkerBridge } from "./service-worker-bridge"; - -// MariaDB directory setup -export { populateMariadbDirs } from "./mariadb-config"; diff --git a/apps/browser-demos/lib/init/mariadb-config.ts b/apps/browser-demos/lib/init/mariadb-config.ts deleted file mode 100644 index e19b8ab109..0000000000 --- a/apps/browser-demos/lib/init/mariadb-config.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * MariaDB directory setup for the kandelo browser environment. - * - * Creates the data directory structure MariaDB needs for bootstrap and - * server operation. - */ -import type { MemoryFileSystem } from "../../../../host/src/vfs/memory-fs"; -import { ensureDir } from "./vfs-utils"; - -/** - * Create the MariaDB data directory structure. - * - * Directories: - * /data — main data directory (--datadir) - * /data/mysql — system tables - * /data/tmp — temporary files (--tmpdir) - * /data/test — default test database - */ -export function populateMariadbDirs(fs: MemoryFileSystem): void { - ensureDir(fs, "/data"); - ensureDir(fs, "/data/mysql"); - ensureDir(fs, "/data/tmp"); - ensureDir(fs, "/data/test"); -} diff --git a/images/vfs/scripts/build-lamp-vfs-image.ts b/images/vfs/scripts/build-lamp-vfs-image.ts index 57881a9e41..f543d97aa9 100644 --- a/images/vfs/scripts/build-lamp-vfs-image.ts +++ b/images/vfs/scripts/build-lamp-vfs-image.ts @@ -49,6 +49,7 @@ import { import { MYSQL_BENCHMARK_PHP } from "../../../apps/browser-demos/lib/init/mysql-benchmark"; import { loadShellBaseFileSystem } from "./shell-vfs-build"; import { preinstallWordPressMariaDb } from "./wordpress-preinstall"; +import { prepareMariadbWritableDirectories } from "./mariadb-image-helpers"; const REPO_ROOT = findRepoRoot(); const BROWSER_DIR = join(REPO_ROOT, "apps", "browser-demos"); @@ -77,8 +78,6 @@ const OPCACHE_SO_PATH = resolveBinary("programs/php/opcache.so"); const MSMTPD_PATH = resolveBinary("programs/msmtpd.wasm"); const OUT_FILE = join(BROWSER_DIR, "public", "lamp.vfs.zst"); const PHP_FPM_WORKERS = 6; -const MYSQL_UID = 101; -const MYSQL_GID = 101; const MARIADB_SOCKET_PATH = "/tmp/mysql.sock"; const LAMP_IMAGE_MAX_BYTES = 768 * 1024 * 1024; const MARIADB_ARIA_LOG_FILE_SIZE = 16 * 1024 * 1024; @@ -87,19 +86,6 @@ const MARIADB_INNODB_LOG_FILE_SIZE = 16 * 1024 * 1024; const MARIADB_INNODB_LOG_BUFFER_SIZE = 1024 * 1024; const MARIADB_INNODB_BUFFER_POOL_SIZE = 8 * 1024 * 1024; -// LAMP-specific data dirs that mariadbd writes to at runtime. The image -// starts from the full shell demo VFS, so the bootstrap script gets the same -// /bin/sh and utility layout users see in the interactive terminal. -function populateMariadbDataDirs(fs: MemoryFileSystem): void { - for (const dir of ["/data", "/data/mysql", "/data/tmp", "/data/test"]) { - ensureDirRecursive(fs, dir); - fs.chown(dir, MYSQL_UID, MYSQL_GID); - fs.chmod(dir, 0o775); - } - ensureDirRecursive(fs, "/tmp"); - fs.chmod("/tmp", 0o1777); -} - function populateMariadb(fs: MemoryFileSystem): void { ensureDirRecursive(fs, "/usr/sbin"); writeVfsBinary(fs, "/usr/sbin/mariadbd", new Uint8Array(readFileSync(MARIADB_PATH))); @@ -430,7 +416,7 @@ async function main() { console.log("Loading shell base image..."); const fs = loadShellBaseFileSystem(LAMP_IMAGE_MAX_BYTES); - populateMariadbDataDirs(fs); + prepareMariadbWritableDirectories(fs); console.log("Writing nginx + php-fpm + msmtpd binaries..."); ensureDirRecursive(fs, "/usr/sbin"); diff --git a/packages/registry/lamp/build.toml b/packages/registry/lamp/build.toml index 3153c80868..5e14698f88 100644 --- a/packages/registry/lamp/build.toml +++ b/packages/registry/lamp/build.toml @@ -11,6 +11,7 @@ inputs = [ "images/rootfs/etc/services", "images/vfs/scripts/kandelo-demo-config.ts", "images/vfs/scripts/kandelo-demo-guides.ts", + "images/vfs/scripts/mariadb-image-helpers.ts", "images/vfs/scripts/opcache-prewarm.ts", "images/vfs/scripts/shell-vfs-build.ts", "images/vfs/scripts/smtp-capture-helpers.ts",