Skip to main content

Encab: A Simple Process Manager

image image image

Encab is a process manager that simplifies running multiple services in a container or from the command line.

It's essentially a replacement for complex, hand-written Docker Container Entrypoint scripts, especially when dockerizing complex legacy applications.

  1. Add it as your Dockerfile Entrypoint, together with the encab configuration file encab.yml,
   ...
   ADD encab.yml .
   ENTRYPOINT ["encab"]
  1. Define what you want to run in your container in encab.yml,
   programs:
      cron:
         command: cron -f
         restart_delay: 1
      main:
         command: httpd-foreground

and encab cares for the rest. Run it and you'll always know who's logging what...

   INFO  encab: encab 1.0.5
   INFO  encab: Using configuration file ./encab.yml, source: Default location.
   ERROR main: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
   ERROR main: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
   ERROR main: [Wed Jan 18 09:47:12.417275 2023] [mpm_event:notice] [pid 12:tid 140142563044672] AH00489: Apache/2.4.54 (Unix) configured -- resuming normal operations
   ERROR main: [Wed Jan 18 09:47:12.417830 2023] [core:notice] [pid 12:tid 140142563044672] AH00094: Command line: 'httpd -D FOREGROUND'
   INFO  cron: Hello Wed Jan 18 09:48:01 UTC 2023

It shares some similarities with supervisord which I've used before I wrote encab but supervisord is a process control system not designed to run in a Container environment.

Features

  • run multiple programs in a container at a time with transparent logging
  • run programs as different users
  • handle environment variables in a flexible way
  • simplify container debugging
  • load, build, validate environment variables

Documentation

Encab Documentation

Installation

Install locally

Prerequisites

   pip install -U encab

Run locally

  1. Create sample encab file encab.yml
   encab:
      dry_run: false
   programs:
      main:
         sh:
            - echo "Hello Encab!"
  1. Run locally:
   encab

The result will be something like this:

INFO  encab: encab 1.0.5
INFO  encab: Using configuration file ./encab.yml, source: Default location.
INFO  main: Hello Encab!
INFO  main: Exited with rc: 0

Install in Container

Prerequisites

  • Docker from your Linux distribution or Docker Desktop.

Run in Container

  1. Create sample encab file encab.yml
   encab:
      dry_run: false
   programs:
      main:
         sh:
            - echo "Hello Encab!"
  1. Add Encab to your Docker file.

    FROM python:3.10.8-slim-bullseye
    # --------------------------------------------
    # Install Venv 
    #
    ENV VIRTUAL_ENV=/opt/encabenv
    ENV PATH="$VIRTUAL_ENV/bin:$PATH"
    RUN python3 -m venv $VIRTUAL_ENV && \
       pip install --upgrade pip
    # --------------------------------------------
    # Install Encab 
    #
    
    RUN pip install encab
    
    # -------------------------------------------
    # add configuration file
    #
    ADD encab.yml .
    
    # -------------------------------------------
    # set encab as entrypoint
    ENTRYPOINT ["encab"]
    
  2. Build container

    docker build -t encab_minimum .
    
  3. Run container

    docker run encab_minimum
    

    Result:

    INFO  encab: encab 1.0.5
    INFO  encab: Using configuration file ./encab.yml, source: Default location.
    INFO  main: Hello world!
    INFO  main: Exited with rc: 0
    

Similar Projects

Metadata

Release files for encab 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for encab 1.0.5
File Size Uploaded
encab-1.0.5.tar.gz 29.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for encab 1.0.5
File Interpreter ABI Platform
encab-1.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 63.9 kB

Release files / encab-1.0.5.tar.gz

Download URL encab-1.0.5.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
757c90ab325f2e9ea217fa3c26210c26449fc0d04760fdbb55d3f995d11497f0
BLAKE2b-256 checksum
How to use checksums
81ba6190db386bedf92881795d2bd0df31ae388d098a41f5c91384b11f8aeef1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release files / encab-1.0.5-py3-none-any.whl

Download URL encab-1.0.5-py3-none-any.whl
Size 34.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9defada61ab21bec830ae3afea8c6e59ffeb13707b9035f1d0bc8d544ab8f1d8
BLAKE2b-256 checksum
How to use checksums
4ff21b1d8db632039e1812d0775a34440c2313bea0db88951e261077951c48b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page