From dbd767e8f19bb2b66a7199eab5267101faf273cf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Tue, 18 Oct 2022 15:01:18 +0200 Subject: [PATCH] wordpress --- apps/api/src/lib.ts | 31 +++++++++ apps/api/src/lib/templates.ts | 118 ++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/apps/api/src/lib.ts b/apps/api/src/lib.ts index 796146c66..650d9243a 100644 --- a/apps/api/src/lib.ts +++ b/apps/api/src/lib.ts @@ -11,13 +11,44 @@ export async function migrateServicesToNewTemplate() { if (service.type === 'fider' && service.fider) await fider(service) if (service.type === 'minio' && service.minio) await minio(service) if (service.type === 'vscodeserver' && service.vscodeserver) await vscodeserver(service) + if (service.type === 'wordpress' && service.wordpress) await wordpress(service) + } } catch (error) { console.log(error) } } +async function wordpress(service: any) { + const { extraConfig, tablePrefix, ownMysql, mysqlHost, mysqlPort, mysqlUser, mysqlPassword, mysqlRootUser, mysqlRootUserPassword, mysqlDatabase, ftpEnabled, ftpUser, ftpPassword, ftpPublicPort, ftpHostKey, ftpHostKeyPrivate } = service.wordpress + const secrets = [ + `MYSQL_ROOT_PASSWORD@@@${mysqlRootUserPassword}`, + `MYSQL_PASSWORD@@@${mysqlPassword}`, + ftpPassword && `FTP_PASSWORD@@@${ftpPassword}`, + ftpHostKeyPrivate && `FTP_HOST_KEY_PRIVATE@@@${ftpHostKeyPrivate}`, + ftpHostKey && `FTP_HOST_KEY@@@${ftpHostKey}`, + ] + const settings = [ + `MYSQL_ROOT_USER@@@${mysqlRootUser}`, + `MYSQL_USER@@@${mysqlUser}`, + `MYSQL_DATABASE@@@${mysqlDatabase}`, + `MYSQL_HOST@@@${mysqlHost}`, + `MYSQL_PORT@@@${mysqlPort}`, + `FTP_ENABLED@@@${ftpEnabled}`, + `FTP_USER@@@${ftpUser}`, + `FTP_PUBLIC_PORT@@@${ftpPublicPort}`, + `WORDPRESS_CONFIG_EXTRA@@@${extraConfig}`, + `WORDPRESS_TABLE_PREFIX@@@${tablePrefix}`, + `OWN_MYSQL@@@${ownMysql}`, + + ] + await migrateSecrets(secrets, service); + await migrateSettings(settings, service); + + // Remove old service data + // await prisma.service.update({ where: { id: service.id }, data: { wordpress: { delete: true } } }) +} async function vscodeserver(service: any) { const { password } = service.vscodeserver diff --git a/apps/api/src/lib/templates.ts b/apps/api/src/lib/templates.ts index 2a842bf02..4acdf8768 100644 --- a/apps/api/src/lib/templates.ts +++ b/apps/api/src/lib/templates.ts @@ -1,4 +1,122 @@ export default [ + { + "templateVersion": "1.0.0", + "serviceDefaultVersion": "php8.1", + "name": "wordpress", + "displayName": "WordPress", + "description": "WordPress is a content management system based on PHP.", + "services": { + "$$id": { + "name": "WordPress", + "documentation": " Taken from https://docs.docker.com/compose/wordpress/", + "depends_on": [ + "$$id_mysql" + ], + "image": "wordpress:$$core_version", + "volumes": [ + "$$id-wordpress-data:/var/www/html", + ], + "environment": [ + "WORDPRESS_DB_HOST=$$config_wordpress_db_host", + "WORDPRESS_DB_USER=$$config_wordpress_db_user", + "WORDPRESS_DB_PASSWORD=$$secret_wordpress_db_password", + "WORDPRESS_DB_NAME=$$config_wordpress_db_name", + "WORDPRESS_CONFIG_EXTRA=$$config_wordpress_config_extra" + ], + "ports": [ + "80" + ] + }, + "$$id-mysql": { + "name": "MySQL", + "depends_on": [], + "image": "mysql:5.7", + "volumes": [ + "$$id-mysql-data:/var/lib/mysql", + ], + "environment": [ + "MYSQL_ROOT_PASSWORD=$$secret_mysql_root_password", + "MYSQL_ROOT_USER=$$config_mysql_root_user", + "MYSQL_DATABASE=$$config_mysql_database", + "MYSQL_USER=$$config_mysql_user", + "MYSQL_PASSWORD=$$secret_mysql_password", + ], + "ports": [] + } + }, + "variables": [ + { + "id": "$$config_wordpress_db_host", + "name": "WORDPRESS_DB_HOST", + "label": "WordPress DB Host", + "defaultValue": "$$id-mysql", + "description": "" + }, + { + "id": "$$config_wordpress_db_user", + "name": "WORDPRESS_DB_USER", + "label": "WordPress DB User", + "defaultValue": "$$config_mysql_user", + "description": "" + }, + { + "id": "$$secret_wordpress_db_password", + "name": "WORDPRESS_DB_PASSWORD", + "label": "WordPress DB Password", + "defaultValue": "$$secret_mysql_password", + "description": "" + }, + { + "id": "$$config_wordpress_db_name", + "name": "WORDPRESS_DB_NAME", + "label": "WordPress DB Name", + "defaultValue": "$$config_mysql_database", + "description": "" + }, + { + "id": "$$config_wordpress_config_extra", + "name": "WORDPRESS_CONFIG_EXTRA", + "label": "WordPress Config Extra", + "defaultValue": "", + "description": "" + }, + { + "id": "$$secret_mysql_root_password", + "name": "MYSQL_ROOT_PASSWORD", + "label": "MySQL Root Password", + "defaultValue": "$$generate_password", + "description": "" + }, + { + "id": "$$config_mysql_root_user", + "name": "MYSQL_ROOT_USER", + "label": "MySQL Root User", + "defaultValue": "$$generate_username", + "description": "" + }, + { + "id": "$$config_mysql_database", + "name": "MYSQL_DATABASE", + "label": "MySQL Database", + "defaultValue": "wordpress", + "description": "" + }, + { + "id": "$$config_mysql_user", + "name": "MYSQL_USER", + "label": "MySQL User", + "defaultValue": "$$generate_username", + "description": "" + }, + { + "id": "$$secret_mysql_password", + "name": "MYSQL_PASSWORD", + "label": "MySQL Password", + "defaultValue": "$$generate_password", + "description": "" + } + ] + }, { "templateVersion": "1.0.0", "serviceDefaultVersion": "4.7.1",