semi
Versatile Docker entrypoint script allowing the creation of configuration files from ERB templates
Configuration File
Configuration file is expected at /etc/semi.conf or as specified by the SEMI_CONF environmental variable.
The configuration file is nothing more than a YAML file with four principal sections: defaults, validate, files and commands. Each of these sections further explained elsewhere in this README file.
---
defaults:
PATH: /usr/bin:/bin
server: foomatic.test.com
validate:
server:
- required
- string
PATH: required, string
files:
- /etc/some.conf
- /etc/another.conf
commands:
README: cat /README.md
readme: cat /README.md
default: bundle exec unicorn -E production -c unicorn.rb
Defaults
The defaults section will supply a value for any variable that has not been specified in the environment. Currently there is a bug that if a value is defined but is set to an empty string in the environment, the default value will not override the environment.
Validators
Validators allow one to insure that the value of a variable is within a specified range. Each key of the validate section is a name of a variable that can be used in the ERB templates. The values are one or more validation expressions to test the values against. The values may be specified as a comma seperated string or as an array.
required
Ensures that a value is defined for the variable. If a value is not defined, then the container will exit with a message detailing which variable has not been set.
string
Validate that the value is generally considered a string.
integer
Test the value to see if it is an integer. Floating point numbers will require another validator.
boolean
This validator attempts to determine if the value is boolean value.
Regular Expression
For validations that are not specified, one is able to specify a regular expression to validate a value. The regular expression must start and end with a slash (/).
Future plans are to include more validators for validating values like hostnames, IPs, host/port combinations, filenames and URLs.
Filenames
The filenames section list all the configuration files that ned to be processed as ERB templates. The full ERB template syntax is supported.
Commands
Additional commands can be added to the container in the commands section. This is useful for adding automation and providing simple commands to activate more complex commands in the container.
There is one special value (default) that will be used when the entrypoint is not provided any arguements.
Templates
Configuration files are marked up using standard ERB template statements.
All variables used in ERB templates need to be specified as lower case.
Debugging
Simple debugging output can be enabled by defining the environmental variable $SEMI_DEBUG. As long as the variable is set to any value, debug statements will be sent to the stdout file handle.
At this time the only real debug output is the command that will be executed by semi.