mirror of
https://github.com/ershisan99/coolify.git
synced 2026-01-25 12:34:32 +00:00
520 lines
21 KiB
TypeScript
520 lines
21 KiB
TypeScript
import { asyncExecShell, createDirectories, getEngine, getUserDetails } from '$lib/common';
|
|
import * as db from '$lib/database';
|
|
import { promises as fs } from 'fs';
|
|
import yaml from 'js-yaml';
|
|
import type { RequestHandler } from '@sveltejs/kit';
|
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
|
import type { ComposeFile } from '$lib/types/composeFile';
|
|
import { getServiceMainPort } from '$lib/components/common';
|
|
|
|
export const post: RequestHandler = async (event) => {
|
|
const { teamId, status, body } = await getUserDetails(event);
|
|
if (status === 401) return { status, body };
|
|
|
|
const { id } = event.params;
|
|
|
|
try {
|
|
const service = await db.getService({ id, teamId });
|
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
|
service;
|
|
const network = destinationDockerId && destinationDocker.network;
|
|
const host = getEngine(destinationDocker.engine);
|
|
const port = getServiceMainPort('n8n');
|
|
|
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
|
const image = getServiceImage(type);
|
|
|
|
if (serviceSecret.length > 0) {
|
|
serviceSecret.forEach((secret) => {
|
|
variables[secret.name] = secret.value;
|
|
});
|
|
}
|
|
|
|
const variables = {
|
|
_APP_ENV: 'production',
|
|
_APP_VERSION: '',
|
|
_APP_LOCALE: '',
|
|
_APP_OPTIONS_ABUSE: '',
|
|
_APP_OPTIONS_FORCE_HTTPS: '',
|
|
_APP_OPENSSL_KEY_V1: '',
|
|
_APP_DOMAIN: '',
|
|
_APP_DOMAIN_TARGET: '',
|
|
_APP_CONSOLE_WHITELIST_ROOT: '',
|
|
_APP_CONSOLE_WHITELIST_EMAILS: '',
|
|
_APP_CONSOLE_WHITELIST_IPS: '',
|
|
_APP_SYSTEM_EMAIL_NAME: '',
|
|
_APP_SYSTEM_EMAIL_ADDRESS: '',
|
|
_APP_SYSTEM_RESPONSE_FORMAT: '',
|
|
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS: '',
|
|
_APP_USAGE_STATS: '',
|
|
_APP_LOGGING_PROVIDER: '',
|
|
_APP_LOGGING_CONFIG: '',
|
|
_APP_USAGE_AGGREGATION_INTERVAL: '',
|
|
_APP_WORKER_PER_CORE: '',
|
|
_APP_REDIS_HOST: '',
|
|
_APP_REDIS_PORT: '',
|
|
_APP_REDIS_USER: '',
|
|
_APP_REDIS_PASS: '',
|
|
_APP_DB_HOST: '',
|
|
_APP_DB_PORT: '',
|
|
_APP_DB_SCHEMA: '',
|
|
_APP_DB_USER: '',
|
|
_APP_DB_PASS: '',
|
|
_APP_DB_ROOT_PASS: '',
|
|
_APP_INFLUXDB_HOST: '',
|
|
_APP_INFLUXDB_PORT: '',
|
|
_APP_STATSD_HOST: '',
|
|
_APP_STATSD_PORT: '',
|
|
_APP_SMTP_HOST: '',
|
|
_APP_SMTP_PORT: '',
|
|
_APP_SMTP_SECURE: '',
|
|
_APP_SMTP_USERNAME: '',
|
|
_APP_SMTP_PASSWORD: '',
|
|
_APP_STORAGE_LIMIT: '',
|
|
_APP_STORAGE_ANTIVIRUS: '',
|
|
_APP_STORAGE_ANTIVIRUS_HOST: '',
|
|
_APP_STORAGE_ANTIVIRUS_PORT: '',
|
|
_APP_STORAGE_DEVICE: '',
|
|
_APP_STORAGE_S3_ACCESS_KEY: '',
|
|
_APP_STORAGE_S3_SECRET: '',
|
|
_APP_STORAGE_S3_REGION: '',
|
|
_APP_STORAGE_S3_BUCKET: '',
|
|
_APP_STORAGE_DO_SPACES_ACCESS_KEY: '',
|
|
_APP_STORAGE_DO_SPACES_SECRET: '',
|
|
_APP_STORAGE_DO_SPACES_REGION: '',
|
|
_APP_STORAGE_DO_SPACES_BUCKET: '',
|
|
_APP_FUNCTIONS_SIZE_LIMIT: '',
|
|
_APP_FUNCTIONS_TIMEOUT: '',
|
|
_APP_FUNCTIONS_BUILD_TIMEOUT: '',
|
|
_APP_FUNCTIONS_CONTAINERS: '',
|
|
_APP_FUNCTIONS_CPUS: '',
|
|
_APP_FUNCTIONS_MEMORY: '',
|
|
_APP_FUNCTIONS_MEMORY_SWAP: '',
|
|
_APP_FUNCTIONS_RUNTIMES: '',
|
|
_APP_EXECUTOR_SECRET: '',
|
|
_APP_EXECUTOR_RUNTIME_NETWORK: '',
|
|
_APP_FUNCTIONS_ENVS: '',
|
|
_APP_FUNCTIONS_INACTIVE_THRESHOLD: '',
|
|
DOCKERHUB_PULL_USERNAME: '',
|
|
DOCKERHUB_PULL_PASSWORD: '',
|
|
DOCKERHUB_PULL_EMAIL: '',
|
|
_APP_MAINTENANCE_INTERVAL: '',
|
|
_APP_MAINTENANCE_RETENTION_EXECUTION: '',
|
|
_APP_MAINTENANCE_RETENTION_ABUSE: '',
|
|
_APP_MAINTENANCE_RETENTION_AUDIT: ''
|
|
};
|
|
const config = {
|
|
appwrite: {
|
|
image: `${image}:${version}`,
|
|
volumes: [
|
|
`${id}-appwrite-uploads:/storage/uploads`,
|
|
`${id}-appwrite-cache:/storage/cache`,
|
|
`${id}-appwrite-config:/storage/config`,
|
|
`${id}-appwrite-certificates:/storage/certificates`,
|
|
`${id}-appwrite-functions:/storage/functions`
|
|
],
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_WORKER_PER_CORE: variables._APP_WORKER_PER_CORE,
|
|
_APP_LOCALE: variables._APP_LOCALE,
|
|
_APP_CONSOLE_WHITELIST_ROOT: variables._APP_CONSOLE_WHITELIST_ROOT,
|
|
_APP_CONSOLE_WHITELIST_EMAILS: variables._APP_CONSOLE_WHITELIST_EMAILS,
|
|
_APP_CONSOLE_WHITELIST_IPS: variables._APP_CONSOLE_WHITELIST_IPS,
|
|
_APP_SYSTEM_EMAIL_NAME: variables._APP_SYSTEM_EMAIL_NAME,
|
|
_APP_SYSTEM_EMAIL_ADDRESS: variables._APP_SYSTEM_EMAIL_ADDRESS,
|
|
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS: variables._APP_SYSTEM_SECURITY_EMAIL_ADDRESS,
|
|
_APP_SYSTEM_RESPONSE_FORMAT: variables._APP_SYSTEM_RESPONSE_FORMAT,
|
|
_APP_OPTIONS_ABUSE: variables._APP_OPTIONS_ABUSE,
|
|
_APP_OPTIONS_FORCE_HTTPS: variables._APP_OPTIONS_FORCE_HTTPS,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_DOMAIN: variables._APP_DOMAIN,
|
|
_APP_DOMAIN_TARGET: variables._APP_DOMAIN_TARGET,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_SMTP_HOST: variables._APP_SMTP_HOST,
|
|
_APP_SMTP_PORT: variables._APP_SMTP_PORT,
|
|
_APP_SMTP_SECURE: variables._APP_SMTP_SECURE,
|
|
_APP_SMTP_USERNAME: variables._APP_SMTP_USERNAME,
|
|
_APP_SMTP_PASSWORD: variables._APP_SMTP_PASSWORD,
|
|
_APP_USAGE_STATS: variables._APP_USAGE_STATS,
|
|
_APP_INFLUXDB_HOST: variables._APP_INFLUXDB_HOST,
|
|
_APP_INFLUXDB_PORT: variables._APP_INFLUXDB_PORT,
|
|
_APP_STORAGE_LIMIT: variables._APP_STORAGE_LIMIT,
|
|
_APP_STORAGE_ANTIVIRUS: variables._APP_STORAGE_ANTIVIRUS,
|
|
_APP_STORAGE_ANTIVIRUS_HOST: variables._APP_STORAGE_ANTIVIRUS_HOST,
|
|
_APP_STORAGE_ANTIVIRUS_PORT: variables._APP_STORAGE_ANTIVIRUS_PORT,
|
|
_APP_STORAGE_DEVICE: variables._APP_STORAGE_DEVICE,
|
|
_APP_STORAGE_S3_ACCESS_KEY: variables._APP_STORAGE_S3_ACCESS_KEY,
|
|
_APP_STORAGE_S3_SECRET: variables._APP_STORAGE_S3_SECRET,
|
|
_APP_STORAGE_S3_REGION: variables._APP_STORAGE_S3_REGION,
|
|
_APP_STORAGE_S3_BUCKET: variables._APP_STORAGE_S3_BUCKET,
|
|
_APP_STORAGE_DO_SPACES_ACCESS_KEY: variables._APP_STORAGE_DO_SPACES_ACCESS_KEY,
|
|
_APP_STORAGE_DO_SPACES_SECRET: variables._APP_STORAGE_DO_SPACES_SECRET,
|
|
_APP_STORAGE_DO_SPACES_REGION: variables._APP_STORAGE_DO_SPACES_REGION,
|
|
_APP_STORAGE_DO_SPACES_BUCKET: variables._APP_STORAGE_DO_SPACES_BUCKET,
|
|
_APP_FUNCTIONS_SIZE_LIMIT: variables._APP_FUNCTIONS_SIZE_LIMIT,
|
|
_APP_FUNCTIONS_TIMEOUT: variables._APP_FUNCTIONS_TIMEOUT,
|
|
_APP_FUNCTIONS_BUILD_TIMEOUT: variables._APP_FUNCTIONS_BUILD_TIMEOUT,
|
|
_APP_FUNCTIONS_CONTAINERS: variables._APP_FUNCTIONS_CONTAINERS,
|
|
_APP_FUNCTIONS_CPUS: variables._APP_FUNCTIONS_CPUS,
|
|
_APP_FUNCTIONS_MEMORY: variables._APP_FUNCTIONS_MEMORY,
|
|
_APP_FUNCTIONS_MEMORY_SWAP: variables._APP_FUNCTIONS_MEMORY_SWAP,
|
|
_APP_EXECUTOR_SECRET: variables._APP_EXECUTOR_SECRET,
|
|
_APP_FUNCTIONS_RUNTIMES: variables._APP_FUNCTIONS_RUNTIMES,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG,
|
|
_APP_STATSD_HOST: variables._APP_STATSD_HOST,
|
|
_APP_STATSD_PORT: variables._APP_STATSD_PORT,
|
|
_APP_MAINTENANCE_INTERVAL: variables._APP_MAINTENANCE_INTERVAL,
|
|
_APP_MAINTENANCE_RETENTION_EXECUTION: variables._APP_MAINTENANCE_RETENTION_EXECUTION,
|
|
_APP_MAINTENANCE_RETENTION_ABUSE: variables._APP_MAINTENANCE_RETENTION_ABUSE,
|
|
_APP_MAINTENANCE_RETENTION_AUDIT: variables._APP_MAINTENANCE_RETENTION_AUDIT
|
|
}
|
|
},
|
|
appwriteRealtime: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_WORKER_PER_CORE: variables._APP_WORKER_PER_CORE,
|
|
_APP_OPTIONS_ABUSE: variables._APP_OPTIONS_ABUSE,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_USAGE_STATS: variables._APP_USAGE_STATS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteExecutor: {
|
|
image: `${image}:${version}`,
|
|
volumes: [
|
|
`${id}-appwrite-functions:/storage/functions`,
|
|
`/tmp:/tmp`,
|
|
'/var/run/docker.sock:/var/run/docker.sock'
|
|
],
|
|
environmentVariables: {
|
|
DOCKERHUB_PULL_USERNAME: variables.DOCKERHUB_PULL_USERNAME,
|
|
DOCKERHUB_PULL_PASSWORD: variables.DOCKERHUB_PULL_PASSWORD,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG,
|
|
_APP_VERSION: variables._APP_VERSION,
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_STORAGE_DEVICE: variables._APP_STORAGE_DEVICE,
|
|
_APP_STORAGE_S3_ACCESS_KEY: variables._APP_STORAGE_S3_ACCESS_KEY,
|
|
_APP_STORAGE_S3_SECRET: variables._APP_STORAGE_S3_SECRET,
|
|
_APP_STORAGE_S3_REGION: variables._APP_STORAGE_S3_REGION,
|
|
_APP_STORAGE_S3_BUCKET: variables._APP_STORAGE_S3_BUCKET,
|
|
_APP_STORAGE_DO_SPACES_ACCESS_KEY: variables._APP_STORAGE_DO_SPACES_ACCESS_KEY,
|
|
_APP_STORAGE_DO_SPACES_SECRET: variables._APP_STORAGE_DO_SPACES_SECRET,
|
|
_APP_STORAGE_DO_SPACES_REGION: variables._APP_STORAGE_DO_SPACES_REGION,
|
|
_APP_STORAGE_DO_SPACES_BUCKET: variables._APP_STORAGE_DO_SPACES_BUCKET,
|
|
_APP_FUNCTIONS_CPUS: variables._APP_FUNCTIONS_CPUS,
|
|
_APP_FUNCTIONS_MEMORY: variables._APP_FUNCTIONS_MEMORY,
|
|
_APP_FUNCTIONS_MEMORY_SWAP: variables._APP_FUNCTIONS_MEMORY_SWAP,
|
|
_APP_FUNCTIONS_TIMEOUT: variables._APP_FUNCTIONS_TIMEOUT,
|
|
_APP_EXECUTOR_SECRET: variables._APP_EXECUTOR_SECRET,
|
|
_APP_FUNCTIONS_RUNTIMES: variables._APP_FUNCTIONS_RUNTIMES,
|
|
_APP_FUNCTIONS_INACTIVE_THRESHOLD: variables._APP_FUNCTIONS_INACTIVE_THRESHOLD,
|
|
_APP_EXECUTOR_RUNTIME_NETWORK: variables._APP_EXECUTOR_RUNTIME_NETWORK
|
|
}
|
|
},
|
|
appwriteWorkerDatabase: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerBuilds: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_EXECUTOR_SECRET: variables._APP_EXECUTOR_SECRET,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerAudits: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerWebhooks: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS: variables._APP_SYSTEM_SECURITY_EMAIL_ADDRESS,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerDeletes: {
|
|
image: `${image}:${version}`,
|
|
volumes: [
|
|
`${id}-appwrite-uploads:/storage/uploads`,
|
|
`${id}-appwrite-cache:/storage/cache`,
|
|
`${id}-appwrite-certificates:/storage/certificates`
|
|
],
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_STORAGE_DEVICE: variables._APP_STORAGE_DEVICE,
|
|
_APP_STORAGE_S3_ACCESS_KEY: variables._APP_STORAGE_S3_ACCESS_KEY,
|
|
_APP_STORAGE_S3_SECRET: variables._APP_STORAGE_S3_SECRET,
|
|
_APP_STORAGE_S3_REGION: variables._APP_STORAGE_S3_REGION,
|
|
_APP_STORAGE_S3_BUCKET: variables._APP_STORAGE_S3_BUCKET,
|
|
_APP_STORAGE_DO_SPACES_ACCESS_KEY: variables._APP_STORAGE_DO_SPACES_ACCESS_KEY,
|
|
_APP_STORAGE_DO_SPACES_SECRET: variables._APP_STORAGE_DO_SPACES_SECRET,
|
|
_APP_STORAGE_DO_SPACES_REGION: variables._APP_STORAGE_DO_SPACES_REGION,
|
|
_APP_STORAGE_DO_SPACES_BUCKET: variables._APP_STORAGE_DO_SPACES_BUCKET,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerCertificates: {
|
|
image: `${image}:${version}`,
|
|
volumes: [
|
|
`${id}-appwrite-config:/storage/config`,
|
|
`${id}-appwrite-certificates:/storage/certificates`
|
|
],
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS: variables._APP_SYSTEM_SECURITY_EMAIL_ADDRESS,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DOMAIN_TARGET: variables._APP_DOMAIN_TARGET,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteWorkerFunctions: {
|
|
image: `${image}:${version}`,
|
|
envvironmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_FUNCTIONS_TIMEOUT: variables._APP_FUNCTIONS_TIMEOUT,
|
|
_APP_EXECUTOR_SECRET: variables._APP_EXECUTOR_SECRET,
|
|
_APP_USAGE_STATS: variables._APP_USAGE_STATS,
|
|
DOCKERHUB_PULL_USERNAME: variables.DOCKERHUB_PULL_USERNAME,
|
|
DOCKERHUB_PULL_PASSWORD: variables.DOCKERHUB_PULL_PASSWORD
|
|
}
|
|
},
|
|
appwriteWorkerMails: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_SYSTEM_EMAIL_NAME: variables._APP_SYSTEM_EMAIL_NAME,
|
|
_APP_SYSTEM_EMAIL_ADDRESS: variables._APP_SYSTEM_EMAIL_ADDRESS,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_SMTP_HOST: variables._APP_SMTP_HOST,
|
|
_APP_SMTP_PORT: variables._APP_SMTP_PORT,
|
|
_APP_SMTP_SECURE: variables._APP_SMTP_SECURE,
|
|
_APP_SMTP_USERNAME: variables._APP_SMTP_USERNAME,
|
|
_APP_SMTP_PASSWORD: variables._APP_SMTP_PASSWORD,
|
|
_APP_LOGGING_PROVIDER: variables._APP_LOGGING_PROVIDER,
|
|
_APP_LOGGING_CONFIG: variables._APP_LOGGING_CONFIG
|
|
}
|
|
},
|
|
appwriteMaintenance: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS,
|
|
_APP_MAINTENANCE_INTERVAL: variables._APP_MAINTENANCE_INTERVAL,
|
|
_APP_MAINTENANCE_RETENTION_EXECUTION: variables._APP_MAINTENANCE_RETENTION_EXECUTION,
|
|
_APP_MAINTENANCE_RETENTION_ABUSE: variables._APP_MAINTENANCE_RETENTION_ABUSE,
|
|
_APP_MAINTENANCE_RETENTION_AUDIT: variables._APP_MAINTENANCE_RETENTION_AUDIT
|
|
}
|
|
},
|
|
appwriteUsage: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_OPENSSL_KEY_V1: variables._APP_OPENSSL_KEY_V1,
|
|
_APP_DB_HOST: variables._APP_DB_HOST,
|
|
_APP_DB_PORT: variables._APP_DB_PORT,
|
|
_APP_DB_SCHEMA: variables._APP_DB_SCHEMA,
|
|
_APP_DB_USER: variables._APP_DB_USER,
|
|
_APP_DB_PASS: variables._APP_DB_PASS,
|
|
_APP_INFLUXDB_HOST: variables._APP_INFLUXDB_HOST,
|
|
_APP_INFLUXDB_PORT: variables._APP_INFLUXDB_PORT,
|
|
_APP_USAGE_AGGREGATION_INTERVAL: variables._APP_USAGE_AGGREGATION_INTERVAL,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS
|
|
}
|
|
},
|
|
appwriteSchedule: {
|
|
image: `${image}:${version}`,
|
|
environmentVariables: {
|
|
_APP_ENV: variables._APP_ENV,
|
|
_APP_REDIS_HOST: variables._APP_REDIS_HOST,
|
|
_APP_REDIS_PORT: variables._APP_REDIS_PORT,
|
|
_APP_REDIS_USER: variables._APP_REDIS_USER,
|
|
_APP_REDIS_PASS: variables._APP_REDIS_PASS
|
|
}
|
|
},
|
|
mariadb: {
|
|
image: 'mariadb:10.7',
|
|
volumes: [`${id}-appwrite-mariadb:/var/lib/mysql`],
|
|
environmentVariables: {
|
|
MYSQL_ROOT_PASSWORD: variables._APP_DB_ROOT_PASS,
|
|
MYSQL_DATABASE: variables._APP_DB_SCHEMA,
|
|
MYSQL_USER: variables._APP_DB_USER,
|
|
MYSQL_PASSWORD: variables._APP_DB_PASS
|
|
}
|
|
},
|
|
redis: {
|
|
image: 'redis:6.0-alpine3.12',
|
|
volumes: [`${id}-appwrite-redis:/data`]
|
|
},
|
|
influxdb: {
|
|
image: 'appwrite/influxdb:1.0.0',
|
|
volumes: [`${id}-appwrite-influxdb:/var/lib/influxdb`]
|
|
},
|
|
telegraf: {
|
|
image: 'appwrite/telegraf:1.0.0',
|
|
environmentVariables: {
|
|
_APP_INFLUXDB_HOST: variables._APP_INFLUXDB_HOST,
|
|
_APP_INFLUXDB_PORT: variables._APP_INFLUXDB_PORT
|
|
}
|
|
}
|
|
};
|
|
|
|
const composeFile: ComposeFile = {
|
|
version: '3.8',
|
|
services: {
|
|
[id]: {
|
|
container_name: id,
|
|
image: config.image,
|
|
networks: [network],
|
|
volumes: [...config.appwrite.volumes],
|
|
environment: config.environmentVariables,
|
|
restart: 'always',
|
|
labels: makeLabelForServices('appwrite'),
|
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
|
deploy: {
|
|
restart_policy: {
|
|
condition: 'on-failure',
|
|
delay: '5s',
|
|
max_attempts: 3,
|
|
window: '120s'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
networks: {
|
|
[network]: {
|
|
external: true
|
|
}
|
|
},
|
|
volumes: {
|
|
[config.volume.split(':')[0]]: {
|
|
name: config.volume.split(':')[0]
|
|
}
|
|
}
|
|
};
|
|
const composeFileDestination = `${workdir}/docker-compose.yaml`;
|
|
await fs.writeFile(composeFileDestination, yaml.dump(composeFile));
|
|
|
|
try {
|
|
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} pull`);
|
|
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
|
|
return {
|
|
status: 200
|
|
};
|
|
} catch (error) {
|
|
return ErrorHandler(error);
|
|
}
|
|
} catch (error) {
|
|
return ErrorHandler(error);
|
|
}
|
|
};
|