isarm simplification

This commit is contained in:
Andras Bacsai 2023-02-17 14:20:17 +01:00
parent 4ef824f665
commit 150b50e0ba
5 changed files with 26 additions and 25 deletions

View File

@ -341,8 +341,8 @@ export function setDefaultBaseImage(
}; };
if (nodeBased.includes(buildPack)) { if (nodeBased.includes(buildPack)) {
if (deploymentType === 'static') { if (deploymentType === 'static') {
payload.baseImage = isARM(process.arch) ? 'nginx:alpine' : 'webdevops/nginx:alpine'; payload.baseImage = isARM() ? 'nginx:alpine' : 'webdevops/nginx:alpine';
payload.baseImages = isARM(process.arch) payload.baseImages = isARM()
? staticVersions.filter((version) => !version.value.includes('webdevops')) ? staticVersions.filter((version) => !version.value.includes('webdevops'))
: staticVersions; : staticVersions;
payload.baseBuildImage = 'node:lts'; payload.baseBuildImage = 'node:lts';
@ -355,8 +355,8 @@ export function setDefaultBaseImage(
} }
} }
if (staticApps.includes(buildPack)) { if (staticApps.includes(buildPack)) {
payload.baseImage = isARM(process.arch) ? 'nginx:alpine' : 'webdevops/nginx:alpine'; payload.baseImage = isARM() ? 'nginx:alpine' : 'webdevops/nginx:alpine';
payload.baseImages = isARM(process.arch) payload.baseImages = isARM()
? staticVersions.filter((version) => !version.value.includes('webdevops')) ? staticVersions.filter((version) => !version.value.includes('webdevops'))
: staticVersions; : staticVersions;
payload.baseBuildImage = 'node:lts'; payload.baseBuildImage = 'node:lts';
@ -376,18 +376,18 @@ export function setDefaultBaseImage(
payload.baseImage = 'denoland/deno:latest'; payload.baseImage = 'denoland/deno:latest';
} }
if (buildPack === 'php') { if (buildPack === 'php') {
payload.baseImage = isARM(process.arch) payload.baseImage = isARM()
? 'php:8.1-fpm-alpine' ? 'php:8.1-fpm-alpine'
: 'webdevops/php-apache:8.2-alpine'; : 'webdevops/php-apache:8.2-alpine';
payload.baseImages = isARM(process.arch) payload.baseImages = isARM()
? phpVersions.filter((version) => !version.value.includes('webdevops')) ? phpVersions.filter((version) => !version.value.includes('webdevops'))
: phpVersions; : phpVersions;
} }
if (buildPack === 'laravel') { if (buildPack === 'laravel') {
payload.baseImage = isARM(process.arch) payload.baseImage = isARM()
? 'php:8.1-fpm-alpine' ? 'php:8.1-fpm-alpine'
: 'webdevops/php-apache:8.2-alpine'; : 'webdevops/php-apache:8.2-alpine';
payload.baseImages = isARM(process.arch) payload.baseImages = isARM()
? phpVersions.filter((version) => !version.value.includes('webdevops')) ? phpVersions.filter((version) => !version.value.includes('webdevops'))
: phpVersions; : phpVersions;
payload.baseBuildImage = 'node:18'; payload.baseBuildImage = 'node:18';

View File

@ -913,10 +913,10 @@ type DatabaseConfiguration =
EDGEDB_SERVER_TLS_CERT_MODE: string; 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 } = const { id, dbUser, dbUserPassword, rootUser, rootUserPassword, defaultDatabase, version, type } =
database; database;
const baseImage = getDatabaseImage(type, arch); const baseImage = getDatabaseImage(type);
if (type === 'mysql') { if (type === 'mysql') {
const configuration = { const configuration = {
privatePort: 3306, privatePort: 3306,
@ -931,7 +931,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/mysql/data`, volume: `${id}-${type}-data:/bitnami/mysql/data`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.volume = `${id}-${type}-data:/var/lib/mysql`; configuration.volume = `${id}-${type}-data:/var/lib/mysql`;
} }
return configuration; return configuration;
@ -949,7 +949,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/mariadb`, volume: `${id}-${type}-data:/bitnami/mariadb`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.volume = `${id}-${type}-data:/var/lib/mysql`; configuration.volume = `${id}-${type}-data:/var/lib/mysql`;
} }
return configuration; return configuration;
@ -964,7 +964,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/mongodb`, volume: `${id}-${type}-data:/bitnami/mongodb`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.environmentVariables = { configuration.environmentVariables = {
MONGO_INITDB_ROOT_USERNAME: rootUser, MONGO_INITDB_ROOT_USERNAME: rootUser,
MONGO_INITDB_ROOT_PASSWORD: rootUserPassword MONGO_INITDB_ROOT_PASSWORD: rootUserPassword
@ -985,7 +985,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/postgresql`, volume: `${id}-${type}-data:/bitnami/postgresql`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.volume = `${id}-${type}-data:/var/lib/postgresql`; configuration.volume = `${id}-${type}-data:/var/lib/postgresql`;
configuration.environmentVariables = { configuration.environmentVariables = {
POSTGRES_PASSWORD: dbUserPassword, POSTGRES_PASSWORD: dbUserPassword,
@ -1009,7 +1009,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/redis/data`, volume: `${id}-${type}-data:/bitnami/redis/data`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.volume = `${id}-${type}-data:/data`; configuration.volume = `${id}-${type}-data:/data`;
configuration.command = `/usr/local/bin/redis-server --appendonly ${ configuration.command = `/usr/local/bin/redis-server --appendonly ${
appendOnly ? 'yes' : 'no' appendOnly ? 'yes' : 'no'
@ -1027,7 +1027,7 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
volume: `${id}-${type}-data:/bitnami/couchdb`, volume: `${id}-${type}-data:/bitnami/couchdb`,
ulimits: {} ulimits: {}
}; };
if (isARM(arch)) { if (isARM()) {
configuration.volume = `${id}-${type}-data:/opt/couchdb/data`; configuration.volume = `${id}-${type}-data:/opt/couchdb/data`;
} }
return configuration; return configuration;
@ -1047,16 +1047,17 @@ export function generateDatabaseConfiguration(database: any, arch: string): Data
return configuration; return configuration;
} }
} }
export function isARM(arch: string) { export function isARM() {
if (arch === 'arm' || arch === 'arm64' || arch === 'aarch' || arch === 'aarch64') { const arch = process.arch;
if (arch === 'arm' || arch === 'arm64') {
return true; return true;
} }
return false; return false;
} }
export function getDatabaseImage(type: string, arch: string): string { export function getDatabaseImage(type: string): string {
const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type); const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type);
if (found) { if (found) {
if (isARM(arch)) { if (isARM()) {
return found.baseImageARM || found.baseImage; return found.baseImageARM || found.baseImage;
} }
return found.baseImage; return found.baseImage;
@ -1064,10 +1065,10 @@ export function getDatabaseImage(type: string, arch: string): string {
return ''; return '';
} }
export function getDatabaseVersions(type: string, arch: string): string[] { export function getDatabaseVersions(type: string): string[] {
const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type); const found = supportedDatabaseTypesAndVersions.find((t) => t.name === type);
if (found) { if (found) {
if (isARM(arch)) { if (isARM()) {
return found.versionsARM || found.versions; return found.versionsARM || found.versions;
} }
return found.versions; return found.versions;

View File

@ -6,7 +6,7 @@ export async function getTemplates() {
try { try {
let data = await open.readFile({ encoding: 'utf-8' }); let data = await open.readFile({ encoding: 'utf-8' });
let jsonData = JSON.parse(data); let jsonData = JSON.parse(data);
if (isARM(process.arch)) { if (isARM()) {
jsonData = jsonData.filter((d) => d.arch !== 'amd64'); jsonData = jsonData.filter((d) => d.arch !== 'amd64');
} }
return jsonData; return jsonData;

View File

@ -40,7 +40,7 @@ export async function startService(request: FastifyRequest<ServiceStartStop>, fa
const { id } = request.params; const { id } = request.params;
const teamId = request.user.teamId; const teamId = request.user.teamId;
const service = await getServiceFromDB({ id, teamId }); const service = await getServiceFromDB({ id, teamId });
const arm = isARM(process.arch); const arm = isARM();
const { type, destinationDockerId, destinationDocker, persistentStorage, exposePort } = const { type, destinationDockerId, destinationDocker, persistentStorage, exposePort } =
service; service;

View File

@ -20,7 +20,7 @@ const root: FastifyPluginAsync = async (fastify): Promise<void> => {
whiteLabeled: process.env.COOLIFY_WHITE_LABELED === 'true', whiteLabeled: process.env.COOLIFY_WHITE_LABELED === 'true',
whiteLabeledIcon: process.env.COOLIFY_WHITE_LABELED_ICON, whiteLabeledIcon: process.env.COOLIFY_WHITE_LABELED_ICON,
isRegistrationEnabled: settings.isRegistrationEnabled, isRegistrationEnabled: settings.isRegistrationEnabled,
isARM: isARM(process.arch) isARM: isARM()
}; };
} catch ({ status, message }) { } catch ({ status, message }) {
return errorHandler({ status, message }); return errorHandler({ status, message });