locald is a library that helps run microservices (or even regular services)
in local development. It allows you to define service dependencies, restart
behavior, etc.
locald has a configuration file, locald.ini, which is a standard .ini file. In it, you define any locald settings and any services locald should be managing.
A basic configuration that manages two services might look like:
[locald]
pid_path=/tmp/myproject.pid
[cart_api]
service_path=cart.myproject.com/backend/myproject_cart_api/locald.service
[cart_www]
service_path=cart.myproject.com/frontend/locald.service
In this case, we define a pid_path for this specific instance of locald (as
you can run many, it is good to make them unique) and two services: a backend
API service (for example, flask application that you are running locally and a
frontend service, perhaps a react.js application.
Services can be defined either directly in the locald.ini file or using the
service_path directive, as shown here.
Configuration files for these services might look like:
id=cart_api
description=Shopping Cart API
restart=always # or, never
restart_seconds=1 # if restarting, how many seconds to wait before doing so
command=/usr/bin/env python3 ../bin/serve.py
id=cart_www
description=Shopping Cart Frontend
restart=always # or, never
restart_seconds=1 # if restarting, how many seconds to wait before doing so
command=yarn run start
requires=cart_api
In this example, cart_www indicates that it requires cart_api. locald will
determine that, if locald start cart_www is run, that cart_api must also be
running, and will start it if it is not.
pip install locald
For full help, run locald --help.
locald start <service>: start the named service, and any dependencies.
locald stop <service>: stop the named service. only stops the named service, not any services it depends on.
locald status: show known services and their status.