https://github.com/fhsinchy/jeeves
Docker based development-only dependency manager for Windows, Linux, and macOS
https://github.com/fhsinchy/jeeves
docker python
Last synced: over 1 year ago
JSON representation
Docker based development-only dependency manager for Windows, Linux, and macOS
- Host: GitHub
- URL: https://github.com/fhsinchy/jeeves
- Owner: fhsinchy
- Created: 2021-12-28T20:52:47.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-08-20T11:06:09.000Z (almost 3 years ago)
- Last Synced: 2025-03-18T17:44:34.065Z (over 1 year ago)
- Topics: docker, python
- Language: Python
- Homepage:
- Size: 30.3 KB
- Stars: 14
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Jeeves
Jeeves is a CLI tool for running development dependencies such as MySQL, Mongo, Redis etc inside pre-configured containers using simple one-liners.
Running containers can be accessed via their exposed ports and can be paired with any other application on your system.
Starting a service such as `mysql` is as simple as executing `jeeves start mysql` and you'll never have to look back at it.
But `mysql` is not the only available service. A list of all the available services can be found in the [data.py](https://github.com/fhsinchy/jeeves/blob/master/data.py) file.
Jeeves is heavily inspired from [tighten/takeout](https://github.com/tighten/takeout) and [fhsinchy/tent](https://github.com/fhsinchy/tent) projects. It is an experimental project. Hence, care should be taken if you're using it in a critical environment.
## Requirements
- Python 3
- Docker
## Installation
```shell
pip install git+https://github.com/fhsinchy/jeeves.git#egg=jeeves
pip freeze
```
Output –
```shell
jeeves==
```
## Usage
The `jeeves` program has following commands:
* `jeeves start ` - starts a container for the given service
* `jeeves stop ` - stops and removes a container for the given service
* `jeeves list` - lists all running containers
All the services in `jeeves` utilizes volumes for persisting data, so even if you stop a service, it's data will be persisted in a volume for later usage. These volumes can listed by executing `docker volume ls` and can be managed like any other Docker volume.
### Start a Service
The generic syntax for the `start` command is as follows:
```bash
jeeves start
## starts mysql and prompts you where necessary
jeeves start mysql
```
### Start Service with Default Configuration
The `--default` flag for the `start` command can be used to skip all the prompts and start a service with default configuration
```bash
jeeves start --default
## starts mysql with the default configuration
jeeves start mysql --default
```
### Stop a Service
The generic syntax for the `stop` command is as follows:
```bash
jeeves stop
## stops mysql and removes the container
## prompts you if multiple containers are found
jeeves stop mysql
## stops all mysql containers and removes them
jeeves stop mysql --all
```
## Running Multiple Versions
Given all the services are running inside containers, you can spin up multiple versions of the same service as long as you're keeping the port different.
Run `jeeves start mysql` twice; the first time, use the `--default` flag, and the second time, put `5.7` as tag and `3307` as host port.
Now, if you run `jeeves list`, you'll see both services running at the same time.
```bash
CONTAINER ID CONTAINER NAME CONTAINER LABEL
e26c7f47e6 priceless_euler mysql--5.7--3308
6cc3f50081 interesting_ptolemy mysql--latest--3306
```
## Container Management
Containers started by `jeeves` are regular containers with some pre-set configurations. So you can use regular `docker` commands such as `ls`, `inspect`, `logs` etc on them. Although `jeeves` comes with a `list` command, using the `docker` commands will result in more informative results. The target of `jeeves` is to provide plug and play containers, not to become a full-fledged `docker` cli.