3.0 KiB
UI templates
This repository hosts the official templates ('Apps') definitions for CloudInovasi UI.
It also describes how to host your own Apps.
Available apps:
- Docker registry (based on
registry:latest) - Nginx (based on
nginx:latest) - Httpd (based on
httpd:latest) - HAProxy (based on
httpd:latest) - MySQL (based on
mysql:latest) - Mongo (based on
mongo:latest) - Elasticsearch (based on
elasticsearch:latest) - Redis (based on
redis:latest) - WordPress (based on
wordpress:latest) - Drupal (based on
drupal:latest) - Magento 2 (based on
alankent/gsd:latest) - Debian (based on
debian:latest) - Ubuntu (based on
ubuntu:latest)
Template definition format
Template definitions are written in JSON.
It must consist of an array with every template definition consisting of one element.
Template format
A template element must be a JSON object with the following mandatory fields:
title: Title of the templatedescription: Description of the templatelogo: URL for the template logoimage: the Docker image associated to the template
The following fields are optional:
env: An array describing the environment variables required by the template. For each variable, an input will be created in the UI.
Format:
{
"name": "the name of the environment variable, as supported in the container image (mandatory)",
"label": "label for the input in the UI (mandatory)",
"set": "pre-defined value for the variable, will not generate an input in the UI (optional)"
}
Example:
{
"name": "MYSQL_ROOT_PASSWORD",
"label": "Root password"
}
volumes: An array describing the associated volumes of the template. For each volume, a Docker volume will be created and associated when starting the template.ports: An array describing the ports exposed by template. Each port will be automatically bound on the host by Docker when starting the container.
Example:
{
"title": "MySQL",
"description": "The most popular open-source database",
"logo": "https://upload.wikimedia.org/wikipedia/en/thumb/6/62/MySQL.svg/640px-MySQL.svg.png",
"image": "mysql:latest",
"env": [
{
"name": "MYSQL_ROOT_PASSWORD",
"label": "Root password"
}
],
"volumes": ["/var/lib/mysql"],
"ports": ["3306/tcp"]
}
Host your own templates
You can build your own container that will use nginx to serve the templates definitions.
Clone the repository, edit the templates file, build and run the container:
$ git clone https://github.com/cloud-inovasi/ui-templates.git
$ cd ui-templates
# Edit the file templates.json
$ docker build -t cloudinovasi-ui-templates .
$ docker run -d -p "8080:80" cloudinovasi-ui-templates
Now you can access your templates definitions at http://docker-host:8080/templates.json.
You can also mount the templates.json file inside the container, so you can edit the file and see live changes:
$ docker run -d -p "8080:80" -v "${PWD}/templates.json:/usr/share/nginx/html/templates.json" cloudinovasi-ui-templates