What is Okty ? • Configuration • Contribute • License • Credits
Okty is a simple tool to generate customized docker-compose files.
This is the configuration repository, you may find more information about this project on the main repository
Each available container has it own yml configuration file in the "containers" folder
Configuration has simples mandatories fields :
name: "The displayed label"
image: "Logo of the container (It has to come from an https source)"
docker: "The name of the image to pull from the docker hub"
version: "The version of of the specified image"
config: []
Config entry is a little bit more complicated and will contains all the options to customize your container
In this array, each entry will be considered as a form group.
In order to make easier setup form for the end user, we recommend to split your configuration by thematics groups.
You need to specify an unique ID for each group and an associated label
config:
-
id: "Unique_ID"
label: "Group Label"
fields: []
Before creating any configuration for your container, you have to had the container id field.
If this field is missing Okty won't be able to work properly.
-
id: name
label: "Container ID"
type: input
base: container_id
destination: id
value: php # Change this by a default value
validators:
required: true
(This is a default structure for your fields)
Okty may handle three types of configuration for your container :
For each type, those three fields are required :
id: Unique_Id
label: "Input label"
destination: volumes|ports|environment
type: input|select-container|multi-select|select
validators: []
The first step to build your configuration file is to define the data you need
This configuration allows you to bind a folder from the host machine to the inside of the container. If you need to bind a volume, you have to add these fields :
destination: volumes
base: "/usr/share/nginx/html" # The path of the folder inside the container
value: "./" # The default path on the host
This configuration allows you to bind a port from the host machine to the container. If you need to bind a port, you have to add these fields :
destination: ports
base: "80" # Port of the container to bind
value: "8080" # Port on the host machine
This type of configuration allows you to add a env variable in the container.
If you need to add a variable, you have to had these fields :
destination: environment
base: VAR_NAME # Variable name
value: "128M" # Default value
This is the main configuration used by Okty.
If you need to customize an existing image, you should create a new one which extends the image you need and set inside configuration from an entrypoint script.
You may check this folder, this is done through two files : Dockerfile and entrypoint.sh
Once you know which data will be needed you may define how user should fill them.
There is four type of input available
This one allows user to write data into a basic text field.
You have to add this line to your field declaration.
The input data will replace the default value.
type: input
This one allows user to select an existing container from his project. You have to add this line to your field declaration. Output will be the unique container_id of the selected one.
type: select-container
This input allows the user to select multiple value from a defined source.
You have to add these lines to your field declaration.
Output will be a string of all values separated by a ";"
type: multi-select
source:
"value1": "Label 01"
"value2": "Label 02"
"value3": "Label 02"
In order the exploit those data, you have to split the output string and iterate through each value in the entrypoint script.
There is an example right there
This input works exactly like the multi-select but user may only choose one value.
Output will be a string with the value of the selected item.
type: select
source:
"value1": "Label 01"
"value2": "Label 02"
"value3": "Label 02"
In order to make sure users provide functional data, you may add some validations on your fields. There are currently three types of validators :
validators:
required: true
numbers: { min: 0, max: 65535 }
regex: "^[a-z]$"
Okty needs help to stay up to date and improve his features.
If something is missing or broken, feel free to open an issue or made a pull request.
Maybe the container you want isn't available ? Make your own or ask for it on through pull requests or issues !
Mapsred |
agranjeon |
orions |
Pierstoval |
kmarques |
---|
Okty is made available under the GNU GPL v3 License.
Okty is created and maintained by Samuel Alves Antunes, Laurent Bassin, Maxime Marquet & Jordan Venant.
We're open to suggestions, feel free to message us or open an issue.
Pull requests are also welcome!