{ "info": { "author": "devxpy", "author_email": "pycampers@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n# DockAPT\n###### A magical fusion of Docker and APT [for Humans\u2122](https://www.kennethreitz.org/projects)\n__DockAPT__ brings together the power of Docker and APT into a single toolchain giving the best of both worlds!\n\n\n## Why\n_TLDR; I was tired of breaking my linux everyday._\n\n1. APT is intrinsically designed to break your system.\n2. Docker solves 1.\n3. But, docker is designed for hackers, not the end user.\n\nUNIX was built on the [philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) of modular software development.\n\nNow, it's time for modular & _isolated_ software development\n\n## Install\nMake sure you have python3.6 on your system, or install it using [pyenv](https://github.com/pyenv/pyenv-installer)\n\n- `$ pip3 install dockapt`\n- `$ dockapt install self` #TODO\n - checks if docker is installed\n - creates the `~/.dockapt` directory\n - `git clone` [this](https://github.com/jessfraz/dockerfiles) for a (fairly large) collection of `Dockerfiles`\n - adds an alias file to your your `~/.bashrc` / `~/.zshrc`\n\n\n## How-TO\nIf you know APT, you know dockapt, mostly.\n\n- \u2728\n - `$ dockapt search foobar`\n - `$ dockapt install foobar`\n - `$ dockapt run foobar` #TODO\n - `$ dockapt uninstall foobar` #TODO\n\n- \u2728\n - `$ dockapt list`\n - `$ dockapt update`\n - `$ dockapt upgrade` #TODO\n\n- \u2728\n - `$ dockapt-repo add https://github.com/foo/bar.git`\n - `$ dockapt-repo remove https://github.com/foo/bar.git`\n - `$ dockapt-repo list`\n\n## Core ideology\nWhile not completely worked out, it's still a good idea to write down how stuff should ideally work.\n\n- Use existing technologies instead of creating new ones.\n - dockapt doesnt keep a database. It works mostly with the filesystem.\n - dockapt uses a `Dockerfile`'s `LABEL`(s), instead of its own `revolutionary` file\n\n- Minimize developer effort in making projects \"dockapt-compatible\"\n - write out how to run your application and what it depends on, directly in your `Dockerfile`\n\n- Avoid dependency hell as much as possible\n - Install dependencies separately for each package, as opposed to the usual one-pacakge-for-all-depends strategy.\n\n- Only change the existing API if it's too botched up.\n - You might have noticed how dockapt keeps all the commands from `apt` but changes the API for `add-apt-repository`.\n\n## How\n\n#### search\n- recursively searches `~/.dockapt/repositories/` for all `Dockerfile`(s)\n- establishes the name of directory containing the `Dockerfile` as the package's name\n- uses fuzzy matching for package names if required\n\n#### install\n- builds the package's `Dockerfile` when you run `dockapt install`\n- builds the `Dockerfile` of all dependencies #TODO\n- stores a file containing the docker image's hash and other meta-data #TODO\n\n#### Dockerfiles\n`Dockerfiles` contain `LABEL`(s) that help dockapt figure out what to do with that `Dockerfile`, like\n- figuring out the dependencies\n- how to actually run that image once its built\n- docker registry image url that it can pull from, to save time building the image\n\n## Local Development\n```\ngit clone https://github.com/pycampers/dockapt.git\ncd dockapt\npipenv install\n```\n\n`pipenv shell`\n\n```\npip install --editable .\ndockapt --help\n```\n\n## Screenshots and general updates\n\nI've taken [this](https://github.com/devxpy/dockerfiles/blob/302decc29dc323d84f39b182aca6b8e62792fcc8/couchpotato/Dockerfile) as sort of a first try on making a working package.\n\n#### Its a WIP, but this is what it can do as of now.\n![dockapt-repo add](https://i.imgur.com/LNWtF2A.png)\n\n![dockapt-repo list](https://i.imgur.com/R9mWc1W.png)\n\n![dockapt install](https://i.imgur.com/xlr8ji9.png)\n\n![dockapt install](https://i.imgur.com/flFydBi.png)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pycampers/dockapt", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dockapt", "package_url": "https://pypi.org/project/dockapt/", "platform": "", "project_url": "https://pypi.org/project/dockapt/", "project_urls": { "Homepage": "https://github.com/pycampers/dockapt" }, "release_url": "https://pypi.org/project/dockapt/0.1/", "requires_dist": [ "gitpython", "crayons", "click", "giturlparse", "docker", "halo", "fuzzywuzzy", "python-levenshtein", "dockerfile-parse" ], "requires_python": ">=3.6.0", "summary": "A magical fusion of Docker and APT for Humans\u2122", "version": "0.1" }, "last_serial": 3749579, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "07a446e02bacd0221658bd3c343947fb", "sha256": "6b1cf11ae714b785ac6584706aab25e3947a335afcdcb7a822af804d23fe8272" }, "downloads": -1, "filename": "dockapt-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "07a446e02bacd0221658bd3c343947fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5983, "upload_time": "2018-04-09T19:04:29", "url": "https://files.pythonhosted.org/packages/71/92/aaf9bd87d908fc2961822a87dc34dbe241a36fc80441ca641229009b04e8/dockapt-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23fe6143046c0c4b30d292997c259363", "sha256": "29cd56ca957bb29688cddd307b9914c55affb24fccf21a2e7b9e6465a82ebb54" }, "downloads": -1, "filename": "dockapt-0.1.tar.gz", "has_sig": false, "md5_digest": "23fe6143046c0c4b30d292997c259363", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6591, "upload_time": "2018-04-09T19:04:30", "url": "https://files.pythonhosted.org/packages/94/55/e7abda35cbe3d2cbad3cc9ecf6fc2af984ca77446ae33722e75467829445/dockapt-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "07a446e02bacd0221658bd3c343947fb", "sha256": "6b1cf11ae714b785ac6584706aab25e3947a335afcdcb7a822af804d23fe8272" }, "downloads": -1, "filename": "dockapt-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "07a446e02bacd0221658bd3c343947fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5983, "upload_time": "2018-04-09T19:04:29", "url": "https://files.pythonhosted.org/packages/71/92/aaf9bd87d908fc2961822a87dc34dbe241a36fc80441ca641229009b04e8/dockapt-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23fe6143046c0c4b30d292997c259363", "sha256": "29cd56ca957bb29688cddd307b9914c55affb24fccf21a2e7b9e6465a82ebb54" }, "downloads": -1, "filename": "dockapt-0.1.tar.gz", "has_sig": false, "md5_digest": "23fe6143046c0c4b30d292997c259363", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6591, "upload_time": "2018-04-09T19:04:30", "url": "https://files.pythonhosted.org/packages/94/55/e7abda35cbe3d2cbad3cc9ecf6fc2af984ca77446ae33722e75467829445/dockapt-0.1.tar.gz" } ] }