From 150b50e0bac655a9d2afacebf8df24c03c292614 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 17 Feb 2023 14:20:17 +0100 Subject: [PATCH] isarm simplification --- apps/api/src/lib/buildPacks/common.ts | 16 ++++++------- apps/api/src/lib/common.ts | 29 ++++++++++++------------ apps/api/src/lib/services.ts | 2 +- apps/api/src/lib/services/handlers.ts | 2 +- apps/api/src/routes/api/v1/base/index.ts | 2 +- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/apps/api/src/lib/buildPacks/common.ts b/apps/api/src/lib/buildPacks/common.ts index 1a0d18d73..e75ac3c75 100644 --- a/apps/api/src/lib/buildPacks/common.ts +++ b/apps/api/src/lib/buildPacks/common.ts @@ -341,8 +341,8 @@ export function setDefaultBaseImage( }; if (nodeBased.includes(buildPack)) { if (deploymentType === 'static') { - payload.baseImage = isARM(process.arch) ? 'nginx:alpine' : 'webdevops/nginx:alpine'; - payload.baseImages = isARM(process.arch) + payload.baseImage = isARM() ? 'nginx:alpine' : 'webdevops/nginx:alpine'; + payload.baseImages = isARM() ? staticVersions.filter((version) => !version.value.includes('webdevops')) : staticVersions; payload.baseBuildImage = 'node:lts'; @@ -355,8 +355,8 @@ export function setDefaultBaseImage( } } if (staticApps.includes(buildPack)) { - payload.baseImage = isARM(process.arch) ? 'nginx:alpine' : 'webdevops/nginx:alpine'; - payload.baseImages = isARM(process.arch) + payload.baseImage = isARM() ? 'nginx:alpine' : 'webdevops/nginx:alpine'; + payload.baseImages = isARM() ? staticVersions.filter((version) => !version.value.includes('webdevops')) : staticVersions; payload.baseBuildImage = 'node:lts'; @@ -376,18 +376,18 @@ export function setDefaultBaseImage( payload.baseImage = 'denoland/deno:latest'; } if (buildPack === 'php') { - payload.baseImage = isARM(process.arch) + payload.baseImage = isARM() ? 'php:8.1-fpm-alpine' : 'webdevops/php-apache:8.2-alpine'; - payload.baseImages = isARM(process.arch) + payload.baseImages = isARM() ? phpVersions.filter((version) => !version.value.includes('webdevops')) : phpVersions; } if (buildPack === 'laravel') { - payload.baseImage = isARM(process.arch) + payload.baseImage = isARM() ? 'php:8.1-fpm-alpine' : 'webdevops/php-apache:8.2-alpine'; - payload.baseImages = isARM(process.arch) + payload.baseImages = isARM() ? phpVersions.filter((version) => !version.value.includes('webdevops')) : phpVersions; payload.baseBuildImage = 'node:18'; diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index e31a86659..70776ee6e 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -913,10 +913,10 @@ type DatabaseConfiguration = EDGEDB_SERVER_TLS_CERT_MODE: string; }; }; -export function generateDatabaseConfiguration(database: any, arch: string): DatabaseConfiguration { +export function generateDatabaseConfiguration(database: any): DatabaseConfiguration { const { id, dbUser, dbUserPassword, rootUser, rootUserPassword, defaultDatabase, version, type } = database; - const baseImage = getDatabaseImage(type, arch); + const baseImage = getDatabaseImage(type); if (type === 'mysql') { const configuration = { privatePort: 3306, @@ -931,7 +931,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/mysql/data`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.volume = `${id}-${type}-data:/var/lib/mysql`; } return configuration; @@ -949,7 +949,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/mariadb`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.volume = `${id}-${type}-data:/var/lib/mysql`; } return configuration; @@ -964,7 +964,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/mongodb`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.environmentVariables = { MONGO_INITDB_ROOT_USERNAME: rootUser, MONGO_INITDB_ROOT_PASSWORD: rootUserPassword @@ -985,7 +985,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/postgresql`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.volume = `${id}-${type}-data:/var/lib/postgresql`; configuration.environmentVariables = { POSTGRES_PASSWORD: dbUserPassword, @@ -1009,7 +1009,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/redis/data`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.volume = `${id}-${type}-data:/data`; configuration.command = `/usr/local/bin/redis-server --appendonly ${ appendOnly ? 'yes' : 'no' @@ -1027,7 +1027,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data volume: `${id}-${type}-data:/bitnami/couchdb`, ulimits: {} }; - if (isARM(arch)) { + if (isARM()) { configuration.volume = `${id}-${type}-data:/opt/couchdb/data`; } return configuration; @@ -1047,16 +1047,17 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data return configuration; } } -export function isARM(arch: string) { - if (arch === 'arm' || arch === 'arm64' || arch === 'aarch' || arch === 'aarch64') { +export function isARM() { + const arch = process.arch; + if (arch === 'arm' || arch === 'arm64') { return true; } return false; } -export function getDatabaseImage(type: string, arch: string): string { +export function getDatabaseImage(type: string): string { const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type); if (found) { - if (isARM(arch)) { + if (isARM()) { return found.baseImageARM || found.baseImage; } return found.baseImage; @@ -1064,10 +1065,10 @@ export function getDatabaseImage(type: string, arch: string): string { return ''; } -export function getDatabaseVersions(type: string, arch: string): string[] { +export function getDatabaseVersions(type: string): string[] { const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type); if (found) { - if (isARM(arch)) { + if (isARM()) { return found.versionsARM || found.versions; } return found.versions; diff --git a/apps/api/src/lib/services.ts b/apps/api/src/lib/services.ts index 19e3094eb..23e472d6e 100644 --- a/apps/api/src/lib/services.ts +++ b/apps/api/src/lib/services.ts @@ -6,7 +6,7 @@ export async function getTemplates() { try { let data = await open.readFile({ encoding: 'utf-8' }); let jsonData = JSON.parse(data); - if (isARM(process.arch)) { + if (isARM()) { jsonData = jsonData.filter((d) => d.arch !== 'amd64'); } return jsonData; diff --git a/apps/api/src/lib/services/handlers.ts b/apps/api/src/lib/services/handlers.ts index 54d0311af..81b6cc3d2 100644 --- a/apps/api/src/lib/services/handlers.ts +++ b/apps/api/src/lib/services/handlers.ts @@ -40,7 +40,7 @@ export async function startService(request: FastifyRequest, fa const { id } = request.params; const teamId = request.user.teamId; const service = await getServiceFromDB({ id, teamId }); - const arm = isARM(process.arch); + const arm = isARM(); const { type, destinationDockerId, destinationDocker, persistentStorage, exposePort } = service; diff --git a/apps/api/src/routes/api/v1/base/index.ts b/apps/api/src/routes/api/v1/base/index.ts index d631df3d8..b03aa197f 100644 --- a/apps/api/src/routes/api/v1/base/index.ts +++ b/apps/api/src/routes/api/v1/base/index.ts @@ -20,7 +20,7 @@ const root: FastifyPluginAsync = async (fastify): Promise => { whiteLabeled: process.env.COOLIFY_WHITE_LABELED === 'true', whiteLabeledIcon: process.env.COOLIFY_WHITE_LABELED_ICON, isRegistrationEnabled: settings.isRegistrationEnabled, - isARM: isARM(process.arch) + isARM: isARM() }; } catch ({ status, message }) { return errorHandler({ status, message });