WIP: Appwrite
This commit is contained in:
parent
cef571b8cc
commit
3435f92fcb
@ -219,6 +219,17 @@ export const supportedServiceTypesAndVersions = [
|
||||
ports: {
|
||||
main: 3000
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'appwrite',
|
||||
fancyName: 'AppWrite',
|
||||
baseImage: 'appwrite/appwrite',
|
||||
images: ['appwrite/influxdb', 'appwrite/telegraf', 'mariadb:10.7', 'redis:6.0-alpine3.12'],
|
||||
versions: ['latest', '0.13.0'],
|
||||
recommendedVersion: '0.13.0',
|
||||
ports: {
|
||||
main: 3000
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
|
21
src/routes/services/[id]/appwrite/index.json.ts
Normal file
21
src/routes/services/[id]/appwrite/index.json.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { getUserDetails } from '$lib/common';
|
||||
import * as db from '$lib/database';
|
||||
import { ErrorHandler } from '$lib/database';
|
||||
import type { RequestHandler } from '@sveltejs/kit';
|
||||
|
||||
export const post: RequestHandler = async (event) => {
|
||||
const { status, body } = await getUserDetails(event);
|
||||
if (status === 401) return { status, body };
|
||||
const { id } = event.params;
|
||||
|
||||
let { name, fqdn, exposePort } = await event.request.json();
|
||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||
if (exposePort) exposePort = Number(exposePort);
|
||||
|
||||
try {
|
||||
await db.updateService({ id, fqdn, name, exposePort });
|
||||
return { status: 201 };
|
||||
} catch (error) {
|
||||
return ErrorHandler(error);
|
||||
}
|
||||
};
|
519
src/routes/services/[id]/appwrite/start.json.ts
Normal file
519
src/routes/services/[id]/appwrite/start.json.ts
Normal file
@ -0,0 +1,519 @@
|
||||
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);
|
||||
}
|
||||
};
|
35
src/routes/services/[id]/appwrite/stop.json.ts
Normal file
35
src/routes/services/[id]/appwrite/stop.json.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { getUserDetails, removeDestinationDocker } from '$lib/common';
|
||||
import * as db from '$lib/database';
|
||||
import { ErrorHandler } from '$lib/database';
|
||||
import { checkContainer } from '$lib/haproxy';
|
||||
import type { RequestHandler } from '@sveltejs/kit';
|
||||
|
||||
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 { destinationDockerId, destinationDocker, fqdn } = service;
|
||||
if (destinationDockerId) {
|
||||
const engine = destinationDocker.engine;
|
||||
|
||||
try {
|
||||
const found = await checkContainer(engine, id);
|
||||
if (found) {
|
||||
await removeDestinationDocker({ id, engine });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
status: 200
|
||||
};
|
||||
} catch (error) {
|
||||
return ErrorHandler(error);
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user