Skip to main content

Run multiple services inside a docker container

Project description

multi-start

GitHub Workflow Status Code style: black PyPI PyPI - Python Version License: BSD 3-Clause

This tool aims to help running multiple services inside a single docker container.

Sometimes you might want to have backend, frontend and nginx (or a combination of those) inside a single container. This tool may help with:

  • Prepare final Nginx configs using parse-template
  • Wait until backend and frontend start responding before running Nginx
  • Stop every process if one of them exits so the whole container stops gracefully

Installation

pip install multi-start

Usage

multi-start --help

Usage: multi-start [OPTIONS]

  Run multiple services at once. Set DEBUG environment variable to 1 for more
  verbose output when running.

Options:
  --backend / --no-backend        Enable backend service  [default: no-
                                  backend]
  --backend-cmd TEXT              Command to start backend service  [default:
                                  poetry run invoke serve]
  --backend-dir TEXT              Working directory for the backend  [default:
                                  backend]
  --backend-port INTEGER          Port number that backend is running at if
                                  port is used
  --backend-socket TEXT           UNIX socket path that backend is running at
                                  if socket is used  [default:
                                  /run/nginx/uvicorn.sock]
  --frontend / --no-frontend      Enable frontend service  [default: no-
                                  frontend]
  --frontend-port INTEGER         Port number that frontend is running at
                                  [default: 3000]
  --frontend-cmd TEXT             Command to start frontend service  [default:
                                  pnpm run start]
  --frontend-dir TEXT             Working directory for the frontend
                                  [default: frontend]
  --nginx / --no-nginx            Enable nginx  [default: no-nginx]
  --nginx-cmd TEXT                Command to start Nginx  [default: nginx -g
                                  "daemon off;"]
  --service-wait-time FLOAT       How long to wait for a service to be up an
                                  running (sec)  [default: 3.0]

Development

Make sure you install pre-commit and run:

pre-commit install

For testing you can use e.g.

poetry run multi-start \
  --backend \
  --backend-dir ../another-project/src \
  --backend-cmd "poetry run invoke dev" \
  --backend-port 8080

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multi_start-1.3.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multi_start-1.3.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file multi_start-1.3.0.tar.gz.

File metadata

  • Download URL: multi_start-1.3.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.14

File hashes

Hashes for multi_start-1.3.0.tar.gz
Algorithm Hash digest
SHA256 d2448f1a41030ba92b6a1242470aafe3c8e69f01ced3e6115a14b3722c76142d
MD5 663554b9c830809758bd94e09e74e1ca
BLAKE2b-256 785b054750691f4ce117b572a0f19941c6c59b1dc05da7d633cae147953920f1

See more details on using hashes here.

File details

Details for the file multi_start-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: multi_start-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.14

File hashes

Hashes for multi_start-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 914ffdda4ccf5dd287af7c17c45cb91f1f20845270a4cbec440448e9dd6344a0
MD5 5e298edad0c05675ed1a1e242300cd24
BLAKE2b-256 5177b311273f834b7e22b3373515b91c7cd9535ad5c410d4184ad3a03bb60d7c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page