A magical fusion of Docker and APT for Humans™
Project description
# DockAPT ###### A magical fusion of Docker and APT [for Humans™](https://www.kennethreitz.org/projects) __DockAPT__ brings together the power of Docker and APT into a single toolchain giving the best of both worlds!
## Why _TLDR; I was tired of breaking my linux everyday._
- APT is intrinsically designed to break your system.
- Docker solves 1.
- But, docker is designed for hackers, not the end user.
UNIX was built on the [philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) of modular software development.
Now, it’s time for modular & _isolated_ software development
## Install Make sure you have python3.6 on your system, or install it using [pyenv](https://github.com/pyenv/pyenv-installer)
- $ pip3 install dockapt
- $ dockapt install self #TODO
- checks if docker is installed
- creates the ~/.dockapt directory
- git clone [this](https://github.com/jessfraz/dockerfiles) for a (fairly large) collection of Dockerfiles
- adds an alias file to your your ~/.bashrc / ~/.zshrc
## How-TO If you know APT, you know dockapt, mostly.
- ✨
- $ dockapt search foobar
- $ dockapt install foobar
- $ dockapt run foobar #TODO
- $ dockapt uninstall foobar #TODO
- ✨
- $ dockapt list
- $ dockapt update
- $ dockapt upgrade #TODO
- ✨
- $ dockapt-repo add https://github.com/foo/bar.git
- $ dockapt-repo remove https://github.com/foo/bar.git
- $ dockapt-repo list
## Core ideology While not completely worked out, it’s still a good idea to write down how stuff should ideally work.
- Use existing technologies instead of creating new ones.
- dockapt doesnt keep a database. It works mostly with the filesystem.
- dockapt uses a Dockerfile’s LABEL`(s), instead of its own `revolutionary file
- Minimize developer effort in making projects “dockapt-compatible”
- write out how to run your application and what it depends on, directly in your Dockerfile
- Avoid dependency hell as much as possible
- Install dependencies separately for each package, as opposed to the usual one-pacakge-for-all-depends strategy.
- Only change the existing API if it’s too botched up.
- You might have noticed how dockapt keeps all the commands from apt but changes the API for add-apt-repository.
## How
#### search - recursively searches ~/.dockapt/repositories/ for all Dockerfile`(s) - establishes the name of directory containing the `Dockerfile as the package’s name - uses fuzzy matching for package names if required
#### install - builds the package’s Dockerfile when you run dockapt install - builds the Dockerfile of all dependencies #TODO - stores a file containing the docker image’s hash and other meta-data #TODO
#### Dockerfiles Dockerfiles contain LABEL`(s) that help dockapt figure out what to do with that `Dockerfile, like - figuring out the dependencies - how to actually run that image once its built - docker registry image url that it can pull from, to save time building the image
## Local Development ` git clone https://github.com/pycampers/dockapt.git cd dockapt pipenv install `
pipenv shell
` pip install --editable . dockapt --help `
## Screenshots and general updates
I’ve taken [this](https://github.com/devxpy/dockerfiles/blob/302decc29dc323d84f39b182aca6b8e62792fcc8/couchpotato/Dockerfile) as sort of a first try on making a working package.
#### Its a WIP, but this is what it can do as of now. 



Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size dockapt-0.1-py2.py3-none-any.whl (6.0 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size dockapt-0.1.tar.gz (6.6 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for dockapt-0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b1cf11ae714b785ac6584706aab25e3947a335afcdcb7a822af804d23fe8272 |
|
MD5 | 07a446e02bacd0221658bd3c343947fb |
|
BLAKE2-256 | 7192aaf9bd87d908fc2961822a87dc34dbe241a36fc80441ca641229009b04e8 |