Categorygithub.com/SwarnimWalavalkar/container_provisioning_engine
repositorypackage
0.0.0-20240505153311-d83b00a3e9c2
Repository: https://github.com/swarnimwalavalkar/container_provisioning_engine.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

Container Provisioning Engine

API service to provision, manage, and expose Docker containers.

It's written in Go and uses the Docker SDK for container management, golang channels and goroutines for concurrency, and Traefik as a reverse proxy to expose the containers.

Features

  • Provisioning of Docker containers from a specified image tag.
  • Support for pulling images from authenticated registries using a username and password.
  • Exposing provisioned containers on a subdomain with a Let's Encrypt SSL certificate.
  • An async task queue system for managing deployment tasks.

Setting Up

Setup .env from the default values in .env.development

cp .env.development .env

Start dependencies in docker

make dx-start

Build and run the application

make start

Improvement Ideas

Robustness

  • Improve fault-tolerance
    • Add Persistence to the queue
    • Add a recovery mechanism to queue system in case of crashes and other irrecoverable failures
  • Add multi-tenancy

Features

  • Access to the realtime docker container logs
  • Zero downtime updates to deployments
  • Horizontally scalable deployments

Admin

  • API rate limiting
  • Enforce Resource limits for individual deployments
  • Track compute resources used by each user (tenant)
    • Limit compute resources allocated to each tenant