Skip to main content

# 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._

  1. APT is intrinsically designed to break your system.

  2. Docker solves 1.

  3. 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. ![dockapt-repo add](https://i.imgur.com/LNWtF2A.png)

![dockapt-repo list](https://i.imgur.com/R9mWc1W.png)

![dockapt install](https://i.imgur.com/xlr8ji9.png)

![dockapt install](https://i.imgur.com/flFydBi.png)

Release files for dockapt 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dockapt 0.1
File Size Uploaded
dockapt-0.1.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dockapt 0.1
File Interpreter ABI Platform
dockapt-0.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 12.6 kB

Release files / dockapt-0.1.tar.gz

Download URL dockapt-0.1.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
29cd56ca957bb29688cddd307b9914c55affb24fccf21a2e7b9e6465a82ebb54
BLAKE2b-256 checksum
How to use checksums
9455e7abda35cbe3d2cbad3cc9ecf6fc2af984ca77446ae33722e75467829445
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / dockapt-0.1-py2.py3-none-any.whl

Download URL dockapt-0.1-py2.py3-none-any.whl
Size 6.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
6b1cf11ae714b785ac6584706aab25e3947a335afcdcb7a822af804d23fe8272
BLAKE2b-256 checksum
How to use checksums
7192aaf9bd87d908fc2961822a87dc34dbe241a36fc80441ca641229009b04e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page