{ "info": { "author": "Pavan Kumar", "author_email": "pavanputhra@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "# Dockdj\n\n#### Django app deployment made easy\n\nDockdj is a command line tool that allows you to deploy any [Django](https://www.djangoproject.com/) app to single Ubuntu server.\n\nThis tool is inspired by [Meteor up](http://meteor-up.com/) tool which is used to deploy [Meteor.js](https://www.meteor.com/) app.\n\nYou can install and use Dockdj on Linux, Mac and Windows. It can deploy to servers running latest Ubuntu.\n\nDockdj is powered by [Docker compose](https://docs.docker.com/compose/overview/), making deployment easy to manage.\n\n\n#### Requirement\n\nThis tool needs Python > 3.6\n\n#### Install\n\nInstall the dockdj using following command\n\n $ pip install dockdj\n\n\n#### Usage\n\nLets say you have a Django project with channels (asgi) and celery worker. \nAnd celery worker needs rabbit mq.\nDockdj can help to deploy this app easily with following architecture.\nEach box inside server is docker container.\n\n +-----------------------------------------------------------------------------+\n | Ubuntu server 18.04 LTS |\n | |\n | +----------------+ |\n | +--------+ wsgi:80 | |\n | +---------------+ | | (gunicorn) | |\n | | nginx:80 +-----------------+ +----------------+ |\n | | static files +-----------------+ |\n | +---------------+ | |\n | localhost:8000 | +----------------+ |\n | | | asgi:80 | |\n | +--------+ (daphne) | |\n | +----------------+ |\n | |\n | |\n | |\n | |\n | |\n | |\n | +--------------+ +----------------+ |\n | | celery +--------------------------+ rabbit mq | |\n | | | | | |\n | +--------------+ +----------------+ |\n | |\n | |\n | Example deployment of django app using dockdj |\n +-----------------------------------------------------------------------------+\n\n###### How to deploy as show in diagram?\n\nCreate a sibling to the django project directory for saving dockdj settings \nfiles which will be used to deploy the django app\n\n $ mkdir deploy\n\n parent\n - hello_world\n | -hello_world\n | -wsgi.py\n - deploy\n\n $ cd deploy\n\n $ dockdj init\n\nThis will create two files `dockdj.yaml` and `settings.py`\n\n parent\n - hello_world\n | -hello_world\n | -wsgi.py\n - deploy\n - dockdj.yaml\n - settings.py\n\nModify the `dockdj.yaml` file to enter server configuration and app details. \nInitial file looks as follows. \nRemove the optional/unused configuration according to your needs.\n\n ---\n server:\n host: 1.2.3.4\n # must be sudo without password\n username: root\n pem: \"/home/user/.ssh/id_rsa\"\n app:\n # Project name used by script to name docker\n name: hello_world_stage\n settings: 'hello_world/settings.py'\n wsgi:\n app: 'hello_world.wsgi:application'\n asgi: # optional if app uses agsi like channels\n app: 'hello_world.asgi:application'\n paths: # used by nginx to route to asig\n - /ws\n - /some_thing_else\n celery: # optional for celery django app\n app: 'hello_world'\n requirements_file: 'requirements.txt'\n extra_files: # Optional: config, certs any other files loaded to /app/extra_files/* in docker container\n - /path/to/abc.txt\n # Django project directory\n path: \"/path/to/django/code/hello_world\"\n docker:\n image: python:3.7\n\n compose:\n services:\n celery:\n depends_on:\n - rabbitmq\n rabbitmq:\n image: rabbitmq\n\n\n`settings.py` fill contains settings which will be appended to your django app's settings.py file. You can enter production related settings or override development settings here. Initial `settings.py` file looks like as follows.\n\n\n DEBUG = False\n\n # Add the your servers host name or ip address\n ALLOWED_HOSTS = ['1.2.3.4', 'www.example.com']\n\n CELERY_BROKER_URL = 'amqp://guest:guest@rabbitmq:5672//'\n\n\nAfter editing these two files appropriately run following command to setup server. This will install docker in Ubuntu servers if not already installed.\n\n\n $ dockdj setup\n\n\nTo deploy the django app run following.\n\n $ dockdj deploy\n\nThis will create docker images of your Django app.\nCollects the static file and adds it to nginx container. \nRuns all required containers as specified in `dockdj.yaml`.\nBinds the port 80 of nginx container to port 8000 of Ubuntu host. \nPort binding can be modified by adding following configuration in `dockdj.yaml'\n\n compose:\n services:\n nginx:\n ports:\n - 8004:80\n\n\n\n#### dockdj stop\n\nRun following command to stop all containers\n\n $ dockdj stop\n\n\n#### dockdj restart\n\nRun following command to restart all containers\n\n $ dockdj restart\n\n\n#### dockdj logs\n\nRun following command to see logs of all containers\n\n $ dockdj logs\n\n\n#### dockdj one-off\n\nYou can run one-off script on server using one-off sub command as follows.\n\n $ dockdj one-off python manage.py migrate\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pavanputhra/dockdj", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dockdj", "package_url": "https://pypi.org/project/dockdj/", "platform": "", "project_url": "https://pypi.org/project/dockdj/", "project_urls": { "Homepage": "https://github.com/pavanputhra/dockdj" }, "release_url": "https://pypi.org/project/dockdj/2.2.2/", "requires_dist": [ "fabric", "PyYAML" ], "requires_python": "", "summary": "Deploy the Django app to Ubuntu server as docker container.", "version": "2.2.2" }, "last_serial": 4843973, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "b9c4c051221cbfeb6af16d4238585bf4", "sha256": "a779f2517c5f83ec2ee3a73e70a9d637024c0611624a3939e741ee5cea325e11" }, "downloads": -1, "filename": "dockdj-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b9c4c051221cbfeb6af16d4238585bf4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6849, "upload_time": "2019-01-10T07:18:13", "url": "https://files.pythonhosted.org/packages/d3/ef/4ecd95d552752fed90e88181c8bfaea3d92b803b51e150cde3f8eeec111e/dockdj-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b40dd4a2b167c35720d9e71490d4c1c", "sha256": "53bf136f38951e34013f70e804f1a7db43160f972df94e13d1a87e00ecaf42e9" }, "downloads": -1, "filename": "dockdj-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3b40dd4a2b167c35720d9e71490d4c1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4782, "upload_time": "2019-01-10T07:18:15", "url": "https://files.pythonhosted.org/packages/71/ae/1621eabc1d911043529b5e93a8246dfc214d025ae0e51dbde245ce81a747/dockdj-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "22eac7b59fba30c6349b085449df29e3", "sha256": "c86975dd347789c2ec5cd5714af3f9964476007be46220b8494852b90ea814d1" }, "downloads": -1, "filename": "dockdj-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "22eac7b59fba30c6349b085449df29e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7529, "upload_time": "2019-01-10T16:17:04", "url": "https://files.pythonhosted.org/packages/8e/29/456751d17cd89a5c1e84ec44a080550a3577985a71f822056ab3e4adb1f1/dockdj-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3018c85f1a8c5ff5623a8010f391b6d0", "sha256": "3e077411e84b0e00d438b6fb029fd7cf368da8c754f8d4c42e49804dc18ec25b" }, "downloads": -1, "filename": "dockdj-1.1.0.tar.gz", "has_sig": false, "md5_digest": "3018c85f1a8c5ff5623a8010f391b6d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5240, "upload_time": "2019-01-10T16:17:06", "url": "https://files.pythonhosted.org/packages/01/54/224f661a1534047dea8ba4e21f5c16a8b46c54777540962bf48d8683940f/dockdj-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "ef8159bba32ba27651eb7f872c6c3a56", "sha256": "40a1399aa775a49a795be7490226b09152a70eb0496408682b9de17d9bd434cc" }, "downloads": -1, "filename": "dockdj-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ef8159bba32ba27651eb7f872c6c3a56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8236, "upload_time": "2019-01-11T10:39:35", "url": "https://files.pythonhosted.org/packages/0a/de/732941c331d48fb319ba6148a6f4a96e22096b019953f7cc7bdaf4b45a7e/dockdj-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5332904319002514f6baaa8a05f17489", "sha256": "b213930b649c4030e5ab7e2159e03e0627e155102e7be896a9aad99c4f3116d6" }, "downloads": -1, "filename": "dockdj-1.2.0.tar.gz", "has_sig": false, "md5_digest": "5332904319002514f6baaa8a05f17489", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5994, "upload_time": "2019-01-11T10:39:37", "url": "https://files.pythonhosted.org/packages/e6/3a/60724d47b1a0f460a6d77b7f978b2d8009162d4c40578eddb1d3882d0a81/dockdj-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "0fa48226eb27e81c4f9994294a75418b", "sha256": "d0ec0fb046722333dcf5f262d9c8c4353c81b53b1a03caf46762593c4dd09b9e" }, "downloads": -1, "filename": "dockdj-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0fa48226eb27e81c4f9994294a75418b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8867, "upload_time": "2019-01-15T18:46:29", "url": "https://files.pythonhosted.org/packages/18/22/a38fd6025bc6633635b551a7e4ad1b6d47cedc6f60523b57db0ee8cfb0c3/dockdj-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "183198942b156e44c1b0b089b01e284e", "sha256": "bbff4242724599a7beb01d27efa56b4d20b19c5e7886c8960ab9d040a6149d46" }, "downloads": -1, "filename": "dockdj-1.3.0.tar.gz", "has_sig": false, "md5_digest": "183198942b156e44c1b0b089b01e284e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6329, "upload_time": "2019-01-15T18:46:31", "url": "https://files.pythonhosted.org/packages/7e/85/e337839bc6e3eddb628ddb3defe14e35749485be6316a088905a271ad53a/dockdj-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "cab16084e42849995a41936368d8ee98", "sha256": "a6624968fdc9e958f9b2d7d62793d40acd9dc311803b43aa348ec63d99189928" }, "downloads": -1, "filename": "dockdj-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cab16084e42849995a41936368d8ee98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8866, "upload_time": "2019-01-17T04:58:01", "url": "https://files.pythonhosted.org/packages/94/97/9e8a57de7c697d0ba3f95bef80372355a54ac41d0eb35d1ca076728bafe2/dockdj-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c24e256a07a26343d6719b13a8d1d13b", "sha256": "f07fdba1b26ae27d27891325d8cca5e364c5c8fa01085974d1d9a0ec871c7935" }, "downloads": -1, "filename": "dockdj-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c24e256a07a26343d6719b13a8d1d13b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6328, "upload_time": "2019-01-17T04:58:03", "url": "https://files.pythonhosted.org/packages/6e/eb/6bb5cb40ee4684678fb93be9a98941db04674ccbee7037b6906378e33a24/dockdj-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "80f597174ac48876fd6da868aab86471", "sha256": "fe935336aa47c89c51cbdd0af527efef9b69cda7003823b02c25441c65922ba0" }, "downloads": -1, "filename": "dockdj-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "80f597174ac48876fd6da868aab86471", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8864, "upload_time": "2019-02-03T07:15:38", "url": "https://files.pythonhosted.org/packages/4d/8e/32d7519cbff39dac1876cd27ef0f9a82f95e3fd3110dea498f7ea9ad8726/dockdj-1.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b74dfc0b061ffe607d3eb66943647cd0", "sha256": "727507f45317d8469222cc8941999341d76ac21eba4fe7c9f094622536f12952" }, "downloads": -1, "filename": "dockdj-1.3.2.tar.gz", "has_sig": false, "md5_digest": "b74dfc0b061ffe607d3eb66943647cd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6310, "upload_time": "2019-02-03T07:15:40", "url": "https://files.pythonhosted.org/packages/2e/43/eb504a050959a702c615723e6b8f05e9ae1cbe2e4d869ae326c1308f3c69/dockdj-1.3.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "4bcabc30c0446203d2d7ddfc82ccb3a7", "sha256": "8898b201299babc253a84c59584dc197b7993da8675f099a71cf6d82006be03b" }, "downloads": -1, "filename": "dockdj-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4bcabc30c0446203d2d7ddfc82ccb3a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9208, "upload_time": "2019-02-18T19:36:11", "url": "https://files.pythonhosted.org/packages/3e/12/dd98d7932f042b52360681c947116108e3cc0be56253e604902270786e97/dockdj-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52b182c4db18554b45810f42c73467e0", "sha256": "042d569f2b84500a0a137ab5aad30f7a09390cbfb959f0e57f187c215decf51a" }, "downloads": -1, "filename": "dockdj-2.0.0.tar.gz", "has_sig": false, "md5_digest": "52b182c4db18554b45810f42c73467e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8325, "upload_time": "2019-02-18T19:36:13", "url": "https://files.pythonhosted.org/packages/3d/f6/41887cb8f640d828d5afec98011fe4c377691e02762c85d9716960e3f2c9/dockdj-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "743bfe3c6d71663f540538d59f8940ea", "sha256": "615abd87253c9b323c13d560a4b6db9f5e861668a2234ed94b2b06c732574c12" }, "downloads": -1, "filename": "dockdj-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "743bfe3c6d71663f540538d59f8940ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9167, "upload_time": "2019-02-18T19:47:31", "url": "https://files.pythonhosted.org/packages/d6/aa/9995e58254b58f5b94de0faa382025a6578b2da6e2bfd369ec29d6387e4f/dockdj-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9473d55428472db19852fd570c08e95b", "sha256": "fdc9230b1b8547841aa0e44bce4cfa931596c92bcc2fad284cc1c693351f4626" }, "downloads": -1, "filename": "dockdj-2.0.1.tar.gz", "has_sig": false, "md5_digest": "9473d55428472db19852fd570c08e95b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8328, "upload_time": "2019-02-18T19:47:33", "url": "https://files.pythonhosted.org/packages/85/e5/52c330bfb5b7df44887b52694a57082b2c33170f3b70137b8a65e9c3ab2b/dockdj-2.0.1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "1e95592aa33fd3dd54f9ee003d38d5e8", "sha256": "80974064eba98068b4fd5f0c0e029e235ccd352ca999c04dd7a4bd4202b5f82b" }, "downloads": -1, "filename": "dockdj-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1e95592aa33fd3dd54f9ee003d38d5e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9293, "upload_time": "2019-02-19T11:23:32", "url": "https://files.pythonhosted.org/packages/fd/f1/0b86c7aeff4398d1739325e18c9ecda74726bbfe94b1fd8dd2b1f5da753d/dockdj-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee245ac11106bb65abc463852c4a6bad", "sha256": "647516e7b8e9b05be7a42441924e68b45f491fbfd84037ebbdaf25ad1dec6bdc" }, "downloads": -1, "filename": "dockdj-2.1.0.tar.gz", "has_sig": false, "md5_digest": "ee245ac11106bb65abc463852c4a6bad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8867, "upload_time": "2019-02-19T11:23:33", "url": "https://files.pythonhosted.org/packages/6e/6c/de7c8ca9d7e8e8fe3e73b6ac7081bd58d00c7ab4946a76516295e3857c9d/dockdj-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "2232b33bff255f42c07694cbf4da2146", "sha256": "987dd6b67351d45bdb6889f36e36cccabfc8310a5bbddbca4bff682531995229" }, "downloads": -1, "filename": "dockdj-2.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2232b33bff255f42c07694cbf4da2146", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9399, "upload_time": "2019-02-20T04:58:27", "url": "https://files.pythonhosted.org/packages/21/9a/e460fe30e5a903ce7799bdcb36001c2ddf99929c7b4d64488789f6aeae14/dockdj-2.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0b95bbc618a7264133b23ab709b8440", "sha256": "7e18fcaa586e3e7ae964d5ce1a111a23f7e83bb0ad28a1d2ad8a6430a1b4e7aa" }, "downloads": -1, "filename": "dockdj-2.2.0.tar.gz", "has_sig": false, "md5_digest": "e0b95bbc618a7264133b23ab709b8440", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9037, "upload_time": "2019-02-20T04:58:29", "url": "https://files.pythonhosted.org/packages/60/90/0bc90784e4841deeae7f94bac7beefac1c594993a6e53bea59bfa0131c20/dockdj-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "da351b6617e3f5fe73362aa01a81b388", "sha256": "7ead7d427749a02dacfa39e7e94f93aab9881c838302a90486c8a5344916b2c9" }, "downloads": -1, "filename": "dockdj-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "da351b6617e3f5fe73362aa01a81b388", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10108, "upload_time": "2019-02-20T05:20:15", "url": "https://files.pythonhosted.org/packages/21/c5/497d5c3ea9cb2a4bc2495ffdd68f3651c95faf1e84a0d3e47f9be5779b42/dockdj-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d0190fb5c1a7f71d0c027092274bf19", "sha256": "1cca007a1129583d3217c89ad7e9edd623b457f870df110113967032fc2156e9" }, "downloads": -1, "filename": "dockdj-2.2.1.tar.gz", "has_sig": false, "md5_digest": "0d0190fb5c1a7f71d0c027092274bf19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9514, "upload_time": "2019-02-20T05:20:17", "url": "https://files.pythonhosted.org/packages/c0/33/f65664ffab2edcefda94eb0bbf59dcc5afe8d8be6845a3506ea6d2922f80/dockdj-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "27806f6bb9287fe4e673df8becfbd18b", "sha256": "5541ea2b39fdff8bd6e3861dba0be77b8cf72392f4db858008b9a1bfece183e3" }, "downloads": -1, "filename": "dockdj-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "27806f6bb9287fe4e673df8becfbd18b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10273, "upload_time": "2019-02-20T06:51:22", "url": "https://files.pythonhosted.org/packages/f9/d8/71d7977967bae5b9c1926846f98fa28144917cf7b2282bfb7ac7a91731d2/dockdj-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fef92190f2e5dc4213ff91051254a77d", "sha256": "338c47c30956344a0c1ebfaba0dd231b33746e280813c6803767f5f508cdcbaa" }, "downloads": -1, "filename": "dockdj-2.2.2.tar.gz", "has_sig": false, "md5_digest": "fef92190f2e5dc4213ff91051254a77d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9680, "upload_time": "2019-02-20T06:51:24", "url": "https://files.pythonhosted.org/packages/1b/ec/e633807dad5111165d7408641e172c03f32d3840eff194bfb8e7c322c8d9/dockdj-2.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "27806f6bb9287fe4e673df8becfbd18b", "sha256": "5541ea2b39fdff8bd6e3861dba0be77b8cf72392f4db858008b9a1bfece183e3" }, "downloads": -1, "filename": "dockdj-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "27806f6bb9287fe4e673df8becfbd18b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10273, "upload_time": "2019-02-20T06:51:22", "url": "https://files.pythonhosted.org/packages/f9/d8/71d7977967bae5b9c1926846f98fa28144917cf7b2282bfb7ac7a91731d2/dockdj-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fef92190f2e5dc4213ff91051254a77d", "sha256": "338c47c30956344a0c1ebfaba0dd231b33746e280813c6803767f5f508cdcbaa" }, "downloads": -1, "filename": "dockdj-2.2.2.tar.gz", "has_sig": false, "md5_digest": "fef92190f2e5dc4213ff91051254a77d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9680, "upload_time": "2019-02-20T06:51:24", "url": "https://files.pythonhosted.org/packages/1b/ec/e633807dad5111165d7408641e172c03f32d3840eff194bfb8e7c322c8d9/dockdj-2.2.2.tar.gz" } ] }