The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

App::aep - Advanced Entry Point (for docker and other containers)

SYNOPSIS

    From within your dockerfile, simply use cpan or cpanm to add App::aep

    It should then be possible to use 'aep' as the entrypoint in the dockerfile

    Please see the EXAMPLES section for a small dockerfile to create a working 
    example

DESCRIPTION

This app is a dynamic entry point for use in container systems such as docker, unlike most perl modules, this has been created to correctly react to signals so it will respond correctly.

Signals passed to this entrypoint will also be passed down to the child.

ARGUMENTS

--config-env

Default value: disabled

Only read command line options from the enviroment

--config-file

Default value: disabled

Only read command line options from the enviroment

--config-args

Default value: disabled

Only listen to command line arguments

--config-merge (default)

Default value: enabled

Merge together env, config and args to generate a config

--config-order (default)

Default value: 'env,conf,args' (left to right)

The order to merge options together,

--env-prefix (default)

Default value: aep-

When scanning the enviroment aep will look for this prefix to know which environment variables it should pay attention to.

command (string)

What to actually run within the container, default is print aes help.

command-args (string)

The arguments to add to the command comma seperated, default is nothing.

Example: --list,--as-service,--with-long "arg",--foreground

command-restart (integer)

If the command exits how many times to retry it, default 0 set to -1 for infinate

command-restart-delay (integer)

The time in milliseconds to wait before retrying the command, default 1000

Lock commands (server)

These are for if you have concerns of 'race' conditions.

lock-server

Default value: disabled

Act like a lock server, this means we will expect other aeps to connect to us, we in turn will say when they should actually start, this is to counter-act race issues when starting multi image containers such as docker-compose.

lock-server-host (string)

What host to bind to, defaults to 0.0.0.0

lock-server-port (integer)

What port to bind to, defaults to 60000

lock-server-default-run

Default value: disabled

If we get sent an ID we do not know what to do with, tell it to run.

lock-server-default-ignore

Default value: enabled

If we get sent an ID we do not know what to do with, ignore it.

lock-server-order (string)

The list of ids and the order to allow them to run, allows OR || operators, for example: db,redis1||redis2,redis1||redis2,nginx

Beware the the lock-server-default-ignore config flag!

Lock commands (client)

lock-client

Default value: disabled

Become a lock client, this will mean your aep will connect to another aep to learn when it should run its command.

lock-server-host (string)

What host to connect to, defaults to 'aep-master'

lock-server-port (integer)

What port to connect to, defaults to 60000

lock-id (string)

What ID we should say we are

BUGS

For any feature requests or bug reports please visit:

* Github https://github.com/PaulGWebster/p5-App-aep

You may also catch up to the author 'daemon' on IRC:

* irc.freenode.net

* #perl

AUTHOR

Paul G Webster <daemon@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Paul G Webster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.