{ "info": { "author": "Yigal Duppen", "author_email": "yigal@publysher.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django :: 1.8", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries" ], "description": "Opinionated Service Discovery for Django\n========================================\nThis project provides a simple workflow for registering services in Django. It is highly opinionated and makes a lot\nof assumptions.\n\nGoal\n----\nWhen developing a Django application, you often need external services such as a database, a key-value store, a\nmessage broker, etc. etc. I prefer to use `Docker `_ and\n`Docker-Compose `_ to have those services running when I develop my application.\n\n``django-discovery`` makes it easy to connect to those services, as long as you follow a specific workflow:\n\n- Development is done on your own machine, with the services running under Docker;\n- Testing is done by running both the services and the application using Docker Compose;\n- The production environment provides an SRV-lookup capable DNS. Examples are:\n\n + Running everything under `Kubernetes `_\n + Running everything on Docker, configured to use an SRV-capable DNS such as `Consul `_\n\n\nRequirements\n------------\n``django-discovery`` requires Python 3 and Django 1.8 because we live in modern times.\n\n\nQuickstart\n----------\nThe following example assumes a Django application that requires a MySQL database. Add the following to your\n``settings.py``:\n\n::\n\n from discovery import services\n\n db = services.register('my_db', 'mysql', secrets=['mysql_user', 'mysql_database', 'mysql_password'])\n\n DATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.mysql',\n 'NAME': db.secrets['mysql_database'],\n 'USER': db.secrets['mysql_user'],\n 'PASSWORD': db.secrets['mysql_password'],\n 'HOST': db.host,\n 'PORT': db.port,\n }\n }\n\n DEBUG = services.debug_mode\n\n\nYou can now run your application on localhost with your database under docker using the following\n``docker-compose.yml``:\n\n::\n\n my_db:\n image: mysql:5.6\n ports:\n - \":3306\"\n environment:\n MYSQL_ROOT_PASSWORD: supersecret\n MYSQL_DATABASE: database_name\n MYSQL_USER: database_user\n MYSQL_PASSWORD: alsosecret\n\n\nYou can also run your application in its entirety in docker, using for example the following docker-compose file:\n\n::\n\n database:\n image: mysql:5.6\n environment:\n MYSQL_ROOT_PASSWORD: supersecret\n MYSQL_DATABASE: database_name\n MYSQL_USER: database_user\n MYSQL_PASSWORD: alsosecret\n\n application:\n build: .\n links:\n - database:my_db\n ports:\n - \"80:8080\"\n env:\n DISCOVERY_MODE: env\n\nAnd still using the same ``settings.py``, you can even run your application under Kubernetes using the following\ndefinitions:\n\n::\n\n apiVersion: v1\n kind: Service\n metadata:\n name: my_db\n spec:\n ports:\n - protocol: tcp\n port: 3306\n\n::\n\n apiVersion: v1\n kind: Endpoints\n metadata:\n name: my_db\n subsets:\n - addresses:\n - ip: 1.2.3.4\n - ports:\n - port: 3306\n\n::\n\n apiVersion: v1\n kind: Pod\n metadata:\n name: my_application\n namespace: my_namespace\n spec:\n containers:\n - name: my_application\n image: my/docker-image\n volumeMounts:\n - name: db_secrets\n mountPath: /etc/secrets/my_db\n readOnly: true\n volumes:\n - name: db_secrets\n secret:\n mysql_database: some_name\n mysql_user: some_user\n mysql_password: secret_password\n\n\nFull Documentation\n------------------\nWorking on it...\n\nLicense\n-------\nThis project is licensed under the MIT license.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/formikejo/django-discovery", "keywords": "django service-discovery docker docker-compose", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "django_discovery", "package_url": "https://pypi.org/project/django_discovery/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django_discovery/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/formikejo/django-discovery" }, "release_url": "https://pypi.org/project/django_discovery/0.0.6/", "requires_dist": null, "requires_python": null, "summary": "Docker service discovery for Django", "version": "0.0.6" }, "last_serial": 1769879, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "81228623d00151248d7ef774948226ce", "sha256": "062a65067cb69ba9ca0573f6dea473dce12e47813de017d6148769585488a085" }, "downloads": -1, "filename": "django_discovery-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "81228623d00151248d7ef774948226ce", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 7344, "upload_time": "2015-10-06T08:29:40", "url": "https://files.pythonhosted.org/packages/04/c4/151e2a9eab1b7181e165620bb4e883e481b30da1588d01ac5b0668533814/django_discovery-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b611c3723f87fa47b9d6c0db2549c5e1", "sha256": "d4e9e40571982e05a0358378baa5998062a97473d453538f2ba37ac64623dab8" }, "downloads": -1, "filename": "django_discovery-0.0.3.tar.gz", "has_sig": false, "md5_digest": "b611c3723f87fa47b9d6c0db2549c5e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4952, "upload_time": "2015-10-06T08:29:36", "url": "https://files.pythonhosted.org/packages/af/c9/a955d350f6c23d8824a16a75cd6c0ca27bb38c88b366a83d07bf28163131/django_discovery-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "e0c5aff29f9723717cda77c6ba8568d4", "sha256": "05ab0045a2ed825eab64f06cebbb4b1db2443720265fede0d75f0b567fdbdd52" }, "downloads": -1, "filename": "django_discovery-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e0c5aff29f9723717cda77c6ba8568d4", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10723, "upload_time": "2015-10-15T09:06:44", "url": "https://files.pythonhosted.org/packages/f1/01/9d0d5a11a91d0ef75959a636043efc399407d068b7b5c3202f94384c11b2/django_discovery-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ab36baecca6aca04b7fec2ac488892a", "sha256": "7f555cc57e199595be493fcfa06555bd5ed6220e42558bdff0d584ad522c4b33" }, "downloads": -1, "filename": "django_discovery-0.0.4.tar.gz", "has_sig": false, "md5_digest": "2ab36baecca6aca04b7fec2ac488892a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6486, "upload_time": "2015-10-15T09:06:36", "url": "https://files.pythonhosted.org/packages/46/aa/5f2d226740c9a0c103db6177a0b2332ff2f15092e9216d402c8a9a9ebc5e/django_discovery-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "89ba46aef631664e6f3fa834f8aa222e", "sha256": "a3e205699ed9f5b13d040e43bc6a32e5fafc9e23d143b673c09903342e5b9fc6" }, "downloads": -1, "filename": "django_discovery-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "89ba46aef631664e6f3fa834f8aa222e", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10755, "upload_time": "2015-10-15T09:15:28", "url": "https://files.pythonhosted.org/packages/aa/12/59ab177f39a2fff1ea8c72625a5ca642e1b9e3b6ced0832921ac55155ab4/django_discovery-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7576562077fc558ac6b290ad4bb91949", "sha256": "df7ffeeded592e4d1696f95a23692bc95f9c96692a696ed00a07c58683be0626" }, "downloads": -1, "filename": "django_discovery-0.0.5.tar.gz", "has_sig": false, "md5_digest": "7576562077fc558ac6b290ad4bb91949", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6522, "upload_time": "2015-10-15T09:15:21", "url": "https://files.pythonhosted.org/packages/d2/df/942b8b8d6f708b07b594305515ffaa20779fc86fc07d9a774ab18d8bd375/django_discovery-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "dbc3718c82807cd0dd54fe84116c55f6", "sha256": "5664f47dc7796677b4fa80eb35e9ed20ce7f078e7b12683ede6b8e0f73243b07" }, "downloads": -1, "filename": "django_discovery-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "dbc3718c82807cd0dd54fe84116c55f6", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10690, "upload_time": "2015-10-15T09:50:50", "url": "https://files.pythonhosted.org/packages/99/6e/d7d6630374fe43796344549198a7412e60feba4f0b8d1855da98cc189751/django_discovery-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0da91284d64599d4bb81ce572ffc91fd", "sha256": "330027880bad106d51ed102908f5b62c64ba9b6972217536ba46158e093428b9" }, "downloads": -1, "filename": "django_discovery-0.0.6.tar.gz", "has_sig": false, "md5_digest": "0da91284d64599d4bb81ce572ffc91fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6441, "upload_time": "2015-10-15T09:50:46", "url": "https://files.pythonhosted.org/packages/d1/07/b9ac1aa7819c52b27b070a85504c7e8ad81a2945dee84dd5b7c90b6a7734/django_discovery-0.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dbc3718c82807cd0dd54fe84116c55f6", "sha256": "5664f47dc7796677b4fa80eb35e9ed20ce7f078e7b12683ede6b8e0f73243b07" }, "downloads": -1, "filename": "django_discovery-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "dbc3718c82807cd0dd54fe84116c55f6", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10690, "upload_time": "2015-10-15T09:50:50", "url": "https://files.pythonhosted.org/packages/99/6e/d7d6630374fe43796344549198a7412e60feba4f0b8d1855da98cc189751/django_discovery-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0da91284d64599d4bb81ce572ffc91fd", "sha256": "330027880bad106d51ed102908f5b62c64ba9b6972217536ba46158e093428b9" }, "downloads": -1, "filename": "django_discovery-0.0.6.tar.gz", "has_sig": false, "md5_digest": "0da91284d64599d4bb81ce572ffc91fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6441, "upload_time": "2015-10-15T09:50:46", "url": "https://files.pythonhosted.org/packages/d1/07/b9ac1aa7819c52b27b070a85504c7e8ad81a2945dee84dd5b7c90b6a7734/django_discovery-0.0.6.tar.gz" } ] }