Added new templates
This commit is contained in:
parent
13b4ee6624
commit
6ef383faad
3 changed files with 362 additions and 23 deletions
|
@ -4,6 +4,7 @@ global $cli;
|
||||||
|
|
||||||
use Utopia\CLI\Console;
|
use Utopia\CLI\Console;
|
||||||
use Utopia\Config\Config;
|
use Utopia\Config\Config;
|
||||||
|
use Utopia\View;
|
||||||
|
|
||||||
$cli
|
$cli
|
||||||
->task('install')
|
->task('install')
|
||||||
|
@ -22,15 +23,12 @@ $cli
|
||||||
* 3. Ask user to backup important volumes, env vars, and SQL tables
|
* 3. Ask user to backup important volumes, env vars, and SQL tables
|
||||||
* In th future we can try and automate this for smaller/medium size setups
|
* In th future we can try and automate this for smaller/medium size setups
|
||||||
* 4. Drop new docker-compose.yml setup (located inside the container, no network dependencies with appwrite.io)
|
* 4. Drop new docker-compose.yml setup (located inside the container, no network dependencies with appwrite.io)
|
||||||
* 5. Run docker-compose up -d
|
* 5. Run docker-compose up -d - DONE
|
||||||
* 6. Run data migration
|
* 6. Run data migration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$vars = Config::getParam('variables');
|
$vars = Config::getParam('variables');
|
||||||
|
|
||||||
// var_dump(realpath(__DIR__.'/docker-compose.yml'));
|
|
||||||
// var_dump(yaml_parse_file(__DIR__.'/docker-compose.yml'));
|
|
||||||
|
|
||||||
Console::success('Starting Appwrite installation...');
|
Console::success('Starting Appwrite installation...');
|
||||||
|
|
||||||
if(!empty($httpPort)) {
|
if(!empty($httpPort)) {
|
||||||
|
@ -58,31 +56,37 @@ $cli
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var_dump($input);
|
$templateForCompose = new View('../views/install/compose.phtml');
|
||||||
|
$templateForEnv = new View('../views/install/env.phtml');
|
||||||
|
|
||||||
// $composeUrl = $source.'/docker-compose.yml?'.http_build_query([
|
$templateForCompose
|
||||||
// 'version' => $version,
|
->setParam('httpPort', $httpPort)
|
||||||
// 'domain' => $domain,
|
->setParam('httpsPort', $httpsPort)
|
||||||
// 'httpPort' => $httpPort,
|
->setParam('version', APP_VERSION_STABLE)
|
||||||
// 'httpsPort' => $httpsPort,
|
;
|
||||||
// 'target' => $target,
|
|
||||||
// ]);
|
|
||||||
|
|
||||||
// $composeFile = @file_get_contents($composeUrl);
|
$templateForEnv
|
||||||
|
->setParam('vars', $input)
|
||||||
|
;
|
||||||
|
|
||||||
// if(!$composeFile) {
|
$path = '/usr/src/code';
|
||||||
// throw new Exception('Failed to fetch Docker Compose file');
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(!file_put_contents('/install/appwrite/docker-compose.yml', $composeFile)) {
|
if(!file_put_contents($path.'/docker-compose.yml', $templateForCompose->render())) {
|
||||||
// throw new Exception('Failed to save Docker Compose file');
|
Console::error('Failed to save Docker Compose file');
|
||||||
// }
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!file_put_contents($path.'/.env', $templateForEnv->render())) {
|
||||||
|
Console::error('Failed to save environment variables file');
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
$stdout = '';
|
$stdout = '';
|
||||||
$stderr = '';
|
$stderr = '';
|
||||||
|
|
||||||
Console::execute('docker-compose -f /install/appwrite/docker-compose.yml up -d', null, $stdout, $stderr);
|
Console::execute("docker-compose -f {$path}.'/docker-compose.yml up -d --remove-orphans", null, $stdout, $stderr);
|
||||||
if ($stdout != NULL) {
|
|
||||||
|
if ($stderr !== '') {
|
||||||
Console::error("Failed to install Appwrite dockers");
|
Console::error("Failed to install Appwrite dockers");
|
||||||
} else {
|
} else {
|
||||||
Console::success("Appwrite installed successfully");
|
Console::success("Appwrite installed successfully");
|
||||||
|
|
327
app/views/install/compose.phtml
Normal file
327
app/views/install/compose.phtml
Normal file
|
@ -0,0 +1,327 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$httpPort = $this->getParam('httpPort', '');
|
||||||
|
$httpsPort = $this->getParam('httpsPort', '');
|
||||||
|
$version = $this->getParam('version', '');
|
||||||
|
?>version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:2.2
|
||||||
|
container_name: appwrite-traefik
|
||||||
|
command:
|
||||||
|
- --providers.file.directory=/storage/config
|
||||||
|
- --providers.file.watch=true
|
||||||
|
- --providers.docker=true
|
||||||
|
- --entrypoints.web.address=:80
|
||||||
|
- --entrypoints.websecure.address=:443
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- <?php echo $httpPort; ?>:80
|
||||||
|
- <?php echo $httpsPort; ?>:443
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- appwrite-config:/storage/config:ro
|
||||||
|
- appwrite-certificates:/storage/certificates:ro
|
||||||
|
depends_on:
|
||||||
|
- appwrite
|
||||||
|
networks:
|
||||||
|
- gateway
|
||||||
|
- appwrite
|
||||||
|
|
||||||
|
appwrite:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
container_name: appwrite
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
labels:
|
||||||
|
- traefik.http.routers.appwrite.rule=PathPrefix(`/`)
|
||||||
|
- traefik.http.routers.appwrite-secure.rule=PathPrefix(`/`)
|
||||||
|
- traefik.http.routers.appwrite-secure.tls=true
|
||||||
|
volumes:
|
||||||
|
- appwrite-uploads:/storage/uploads:rw
|
||||||
|
- appwrite-cache:/storage/cache:rw
|
||||||
|
- appwrite-config:/storage/config:rw
|
||||||
|
- appwrite-certificates:/storage/certificates:rw
|
||||||
|
- appwrite-functions:/storage/functions:rw
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
- redis
|
||||||
|
- clamav
|
||||||
|
- influxdb
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_OPTIONS_ABUSE
|
||||||
|
- _APP_OPTIONS_FORCE_HTTPS
|
||||||
|
- _APP_OPENSSL_KEY_V1
|
||||||
|
- _APP_DOMAIN
|
||||||
|
- _APP_DOMAIN_TARGET
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
- _APP_INFLUXDB_HOST
|
||||||
|
- _APP_INFLUXDB_PORT
|
||||||
|
- _APP_STORAGE_LIMIT
|
||||||
|
- _APP_FUNCTIONS_TIMEOUT
|
||||||
|
- _APP_FUNCTIONS_CONTAINERS
|
||||||
|
|
||||||
|
appwrite-worker-usage:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-usage
|
||||||
|
container_name: appwrite-worker-usage
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- telegraf
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_STATSD_HOST
|
||||||
|
- _APP_STATSD_PORT
|
||||||
|
|
||||||
|
appwrite-worker-audits:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-audits
|
||||||
|
container_name: appwrite-worker-audits
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
|
||||||
|
appwrite-worker-webhooks:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-webhooks
|
||||||
|
container_name: appwrite-worker-webhooks
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
|
||||||
|
appwrite-worker-tasks:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-tasks
|
||||||
|
container_name: appwrite-worker-tasks
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
|
||||||
|
appwrite-worker-deletes:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-deletes
|
||||||
|
container_name: appwrite-worker-deletes
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
volumes:
|
||||||
|
- appwrite-uploads:/storage/uploads:rw
|
||||||
|
- appwrite-cache:/storage/cache:rw
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
|
||||||
|
appwrite-worker-certificates:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-certificates
|
||||||
|
container_name: appwrite-worker-certificates
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
volumes:
|
||||||
|
- appwrite-config:/storage/config:rw
|
||||||
|
- appwrite-certificates:/storage/certificates:rw
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
|
||||||
|
appwrite-worker-functions:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-functions
|
||||||
|
container_name: appwrite-worker-functions
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mariadb
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- /tmp:/tmp:rw
|
||||||
|
- appwrite-functions:/storage/functions:rw
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_DB_HOST
|
||||||
|
- _APP_DB_PORT
|
||||||
|
- _APP_DB_SCHEMA
|
||||||
|
- _APP_DB_USER
|
||||||
|
- _APP_DB_PASS
|
||||||
|
- _APP_FUNCTIONS_TIMEOUT
|
||||||
|
- _APP_FUNCTIONS_CONTAINERS
|
||||||
|
|
||||||
|
appwrite-worker-mails:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: worker-mails
|
||||||
|
container_name: appwrite-worker-mails
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- smtp
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
- _APP_SMTP_HOST
|
||||||
|
- _APP_SMTP_PORT
|
||||||
|
|
||||||
|
appwrite-schedule:
|
||||||
|
image: appwrite/appwrite:<?php echo $version; ?>
|
||||||
|
entrypoint: schedule
|
||||||
|
container_name: appwrite-schedule
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
environment:
|
||||||
|
- _APP_ENV
|
||||||
|
- _APP_REDIS_HOST
|
||||||
|
- _APP_REDIS_PORT
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: appwrite/mariadb:1.0.3 # fix issues when upgrading using: mysql_upgrade -u root -p
|
||||||
|
container_name: appwrite-mariadb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
volumes:
|
||||||
|
- appwrite-mariadb:/var/lib/mysql:rw
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=rootsecretpassword
|
||||||
|
- MYSQL_DATABASE=appwrite
|
||||||
|
- MYSQL_USER=user
|
||||||
|
- MYSQL_PASSWORD=password
|
||||||
|
command: 'mysqld --innodb-flush-method=fsync'
|
||||||
|
|
||||||
|
smtp:
|
||||||
|
image: appwrite/smtp:1.0.1
|
||||||
|
container_name: appwrite-smtp
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
environment:
|
||||||
|
- MAILNAME=appwrite
|
||||||
|
- RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:5.0
|
||||||
|
container_name: appwrite-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
volumes:
|
||||||
|
- appwrite-redis:/data:rw
|
||||||
|
|
||||||
|
clamav:
|
||||||
|
image: appwrite/clamav:1.0.12
|
||||||
|
container_name: appwrite-clamav
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
volumes:
|
||||||
|
- appwrite-uploads:/storage/uploads
|
||||||
|
|
||||||
|
influxdb:
|
||||||
|
image: influxdb:1.6
|
||||||
|
container_name: appwrite-influxdb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
volumes:
|
||||||
|
- appwrite-influxdb:/var/lib/influxdb:rw
|
||||||
|
|
||||||
|
telegraf:
|
||||||
|
image: appwrite/telegraf:1.0.0
|
||||||
|
container_name: appwrite-telegraf
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- appwrite
|
||||||
|
|
||||||
|
networks:
|
||||||
|
gateway:
|
||||||
|
appwrite:
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
appwrite-mariadb:
|
||||||
|
appwrite-redis:
|
||||||
|
appwrite-cache:
|
||||||
|
appwrite-uploads:
|
||||||
|
appwrite-certificates:
|
||||||
|
appwrite-functions:
|
||||||
|
appwrite-influxdb:
|
||||||
|
appwrite-chronograf:
|
||||||
|
appwrite-config:
|
8
app/views/install/env.phtml
Normal file
8
app/views/install/env.phtml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$vars = $this->getParam('vars');
|
||||||
|
|
||||||
|
foreach ($vars as $key => $value) {
|
||||||
|
echo $key.'='.$value."\n";
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in a new issue