A simple, fast CLI tool for spinning up data infrastructure services using Docker or Podman.
- Run data infrastructure services with a single command
- Supports both Docker and Podman container runtimes
- Embed all configuration files in the binary for easy distribution
- Optional data persistence
- Connect to services with pre-configured environment variables
# Clone the repository
git clone https://github.com/data-catering/insta-infra.git
cd insta-infra
# Build and install
make install
go install github.com/data-catering/insta-infra/cmd/insta@latest
- Docker (20.10+) or Podman (3.0+)
- For Docker: Docker Compose plugin
- For Podman: Podman Compose plugin or podman-compose
# List available services
insta -l
# Start a service
insta postgres
# Start multiple services
insta postgres mysql elasticsearch
# Start a service with persistent data
insta -p postgres
# Connect to a running service
insta -c postgres
# Shutdown services
insta -d postgres
# Shutdown all services
insta -d
# Explicitly start a service in docker or podman
insta -r docker postgres
insta -r podman postgres
# Show help
insta -h
# Show version
insta -v
By default, all data is stored in memory and will be lost when the containers are stopped. To enable persistence, use the -p
flag:
insta -p postgres
This will store data in ~/.insta/data/<service_name>/persist/
.
.
├── cmd/
│ └── insta/ # Main CLI application
│ ├── container/ # Container runtime implementations
│ ├── resources/ # Embedded resources
│ │ ├── data/ # Service configuration files
│ │ └── *.yaml # Docker compose files
│ ├── models.go # Service definitions
│ └── main.go # CLI entry point
├── tests/ # Integration tests
├── Makefile # Build and development tasks
└── README.md # Documentation
- Clone the repository
- Make changes
- Run tests:
make test
- Build:
make build
- Run:
./insta
- Add service configuration to
docker-compose.yaml
- Add service definition to
models.go
- Add any necessary initialization scripts to
cmd/insta/resources/data/<service_name>/
- Update tests
Service Type | Service | Supported |
---|---|---|
Api Gateway | kong | ✅ |
Cache | redis | ✅ |
Change Data Capture | debezium | ✅ |
Code Analysis | sonarqube | ✅ |
Database | cassandra | ✅ |
Database | cockroachdb | ✅ |
Database | elasticsearch | ✅ |
Database | mariadb | ✅ |
Database | mongodb | ✅ |
Database | mssql | ✅ |
Database | mysql | ✅ |
Database | neo4j | ✅ |
Database | opensearch | ✅ |
Database | postgres | ✅ |
Database | spanner | ✅ |
Database | sqlite | ✅ |
Data Catalog | amundsen | ✅ |
Data Catalog | datahub | ✅ |
Data Catalog | marquez | ✅ |
Data Catalog | openmetadata | ✅ |
Data Catalog | polaris | ✅ |
Data Catalog | unitycatalog | ✅ |
Data Collector | fluentd | ✅ |
Data Collector | logstash | ✅ |
Data Visualisation | blazer | ✅ |
Data Visualisation | evidence | ✅ |
Data Visualisation | metabase | ✅ |
Data Visualisation | redash | ✅ |
Data Visualisation | superset | ✅ |
Distributed Coordination | zookeeper | ✅ |
Distributed Data Processing | flink | ✅ |
Identity Management | keycloak | ✅ |
Job Orchestrator | airflow | ✅ |
Job Orchestrator | dagster | ✅ |
Job Orchestrator | mage-ai | ✅ |
Job Orchestrator | prefect | ✅ |
Messaging | activemq | ✅ |
Messaging | kafka | ✅ |
Messaging | rabbitmq | ✅ |
Messaging | solace | ✅ |
Notebook | jupyter | ✅ |
Object Storage | minio | ✅ |
Query Engine | duckdb | ✅ |
Query Engine | flight-sql | ✅ |
Query Engine | presto | ✅ |
Query Engine | trino | ✅ |
Real-time OLAP | clickhouse | ✅ |
Real-time OLAP | doris | ✅ |
Real-time OLAP | druid | ✅ |
Real-time OLAP | pinot | ✅ |
Schema Registry | confluent-schema-registry | ✅ |
Test Data Management | data-caterer | ✅ |
Web Server | httpbin | ✅ |
Web Server | httpd | ✅ |
Workflow | maestro | ✅ |
Workflow | temporal | ✅ |
The easiest way to update is using the built-in update command:
insta -u
This will automatically:
- Check for the latest version
- Download the appropriate binary for your platform
- Install the update
- Create a backup of the old version
If you installed via a package manager, you can update using the standard update commands:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade
# RHEL/CentOS/Fedora
sudo dnf update
# or
sudo yum update
# Arch Linux
sudo pacman -Syu
# macOS (Homebrew)
brew upgrade
# Windows (Chocolatey)
choco upgrade insta
If you prefer to update manually:
- Download the latest release from the GitHub releases page
- Replace your existing binary with the new one
- Make sure the binary is executable:
chmod +x insta