{ "info": { "author": "Dmitry Drozdov", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4" ], "description": "Docker Compose for Swarm Mode\n=============================\n\nDrop in replacement for docker-compose that works with swarm mode\nintroduced in Docker 1.12 (and converter to Kubernetes format).\n\nMotivation\n----------\n\nDocker 1.12 with its new `Swarm\nmode `__ has been out for a\nwhile, but Docker Compose - the great tool for running multi-container\nconfigurations - still (1.5+ months after Docker release) doesn't\nsupport it.\n\nThe only thing they offer is generating a\n`DAB `__\nfile from your ``docker-compose.yml`` and deploying it to Docker.\nHowever DAB doesn't support a lot of ``docker-compose.yml`` stuff and\ndeploying it to Docker is an experimental feature that is not supported\nyet in the latest 1.12.1 release.\n\nSo you should either stick with the previous version of Docker or throw\nout all your docker-compose files and run a bunch of long\n``docker service ...`` commands.\n\nNeither option looked good to me so, as a temporary solution (I still\nhope Docker Compose with swarm mode support will be released soon), I've\ncreated a script that parses a ``docker-compose.yml`` file, generates\n``docker service ...`` commands for you and runs them.\n\nUPDATE\n^^^^^^\n\nAfter some stability and network issues with Docker swarm mode we've\ndecided to try our luck with Kubernetes.\n\nSeveral existing compose-to-kubernetes translation tools have failed on\nour compose files, so I decided to quick add such functionality to\ndocker-compose-swarm-mode.\n\nInstallation\n------------\n\ndocker-compose-swarm-mode is available on\n`PyPI `__.\n\n``pip install docker-compose-swarm-mode``\n\nOr just download the ``.py`` script.\n\nOr use Docker image\n`ddrozdov/docker-compose-swarm-mode `__,\ne.g.:\n\n::\n\n docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock -v /some/dir/with/compose/files:/compose ddrozdov/docker-compose-swarm-mode -f /compose/docker-compose.yml --dry-run up\n\nRequirements\n------------\n\nPython 2.7+.\n\nUsage\n-----\n\nThe script tries its best to support the CLI of the original Docker\nCompose so just use it as you would use Docker Compose.\n\nUse ``--dry-run`` option if you'd first like to check what ``docker``\ncommands are to be executed.\n\nThe script currently doesn't support all docker-compose commands,\noptions, and ``yml`` keys. It just supports what I've needed in my\nprojects so far. See the usage help with ``-h`` flag and try the script\nwith your ``docker-compose.yml``, it'll tell you if there are\nunsupported keys.\n\nIn case you need something that is not supported yet, feel free to\ncreate an issue and/or submit a pull request.\n\nKeys that are silently ignored because they are not supported by\n``docker service``: \\* container\\_name \\* expose \\* extra\\_hosts \\*\nhostname\n\nConvert to Kubernetes format (since 2.0.0)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe script can also be used to convert compose files to Kubernetes\nresource specifications:\n\n::\n\n docker-compose-swarm-mode -f docker-compose.yml -p project convert > kubernetes.yml\n\nCurrently only the things under top-level ``services`` key are\nconverted.\n\nFor each compose's service one Kubernetes Service and one Deployment are\ngenerated.\n\nSupport for some keys is not yet implemented (see TODOs in the code).\n\nKeys that are silently ignored because they are not supported by\nKubernetes: \\* extra\\_hosts \\* hostname \\* logging \\* networks\n\nHistory\n-------\n\n2.1.0\n^^^^^\n\nSupport for volume ``driver`` key.\n\nSupport for ``env_file`` key.\n\nSome ``convert`` related fixes.\n\nSupport for dictionary format in ``labels`` key.\n\nFix ``bash`` missing in Docker image.\n\nShell quoting fixes.\n\n2.0.0\n^^^^^\n\nNew operation ``convert`` to translate compose files to Kubernetes\nformat.\n\n1.4.0\n^^^^^\n\nSupport for ``mode`` key.\n\nUse \"json-file\" as a default for ``logging.driver``.\n\nPartial support for ``labels`` key (array format only).\n\nExtended services merging fixes and improvements.\n\nFix Python 3 compatibility.\n\n1.3.0\n^^^^^\n\nSupport empty project name (resolves #24).\n\nMerge lists and dictionaries for extended services.\n\n1.2.2\n^^^^^\n\nHotfix for stop & rm commands.\n\n1.2.1\n^^^^^\n\nFix service detection (fixes #21 and #23).\n\nFix typo in volume detection.\n\n1.2.0\n^^^^^\n\nFix services, networks, and volumes being incorrectly detected as\nexisting/running in some cases.\n\nFix spaces handling in variables under ``environment`` key.\n\nSupport for multiple compose files.\n\nSupport for ``.env`` file.\n\n1.1.1\n^^^^^\n\nFix pypandoc being required on installation while needed on packaging\nphase only.\n\n1.1.0\n^^^^^\n\nPython 3 support.\n\nInstallation from PyPI.\n\n1.0.0\n^^^^^\n\nFirst release.\n\nLicense\n-------\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Dmitry Drozdov\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/ddrozdov/docker-compose-swarm-mode/tarball/2.1.0", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ddrozdov/docker-compose-swarm-mode", "keywords": "docker,docker-compose,swarm", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "docker-compose-swarm-mode", "package_url": "https://pypi.org/project/docker-compose-swarm-mode/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/docker-compose-swarm-mode/", "project_urls": { "Download": "https://github.com/ddrozdov/docker-compose-swarm-mode/tarball/2.1.0", "Homepage": "https://github.com/ddrozdov/docker-compose-swarm-mode" }, "release_url": "https://pypi.org/project/docker-compose-swarm-mode/2.1.0/", "requires_dist": null, "requires_python": null, "summary": "Drop in replacement for docker-compose that works with swarm mode introduced in Docker 1.12 (and converter to Kubernetes format).", "version": "2.1.0" }, "last_serial": 2526240, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "76a314f73068ced63918f2f446e0f245", "sha256": "87f21ecd92341e3bd674a1ccb4610ece68a642f8661c8ed36501534184899b77" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.1.0.tar.gz", "has_sig": false, "md5_digest": "76a314f73068ced63918f2f446e0f245", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6038, "upload_time": "2016-09-11T21:27:06", "url": "https://files.pythonhosted.org/packages/24/98/3d73f68f8e8a54e2960e548d3e400a0561ccbf583f6c06cfd601459ec973/docker-compose-swarm-mode-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e5de2c9a9d9545aa132ba52dbe2c433f", "sha256": "212525a94d57ea915e850d5ee02ac4fbe27f61c98e19463f2c1e68069623c23d" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e5de2c9a9d9545aa132ba52dbe2c433f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6132, "upload_time": "2016-09-13T20:28:52", "url": "https://files.pythonhosted.org/packages/1d/bd/b9eeb190f94afaa6803be446f566b62d69872fb44c8aefae859b55b58036/docker-compose-swarm-mode-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "6111b594a8017935574e55ec6d181086", "sha256": "424d6299bdf397dd3b698ecc1726ccfad2e5d7de435f05019ab9938a2048d6e2" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.2.0.tar.gz", "has_sig": false, "md5_digest": "6111b594a8017935574e55ec6d181086", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6957, "upload_time": "2016-10-05T00:16:12", "url": "https://files.pythonhosted.org/packages/89/41/f100997281f4bd6fdeec7cb527d2e7050829c6c48265879ed83b1915fb27/docker-compose-swarm-mode-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "e63765446bf7d84d97ee37c4d8400554", "sha256": "5c1d50bba0bd101046dd81c68aeab4b72e31a0fd36d85d1e66d90b9b4c649c43" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.2.1.tar.gz", "has_sig": false, "md5_digest": "e63765446bf7d84d97ee37c4d8400554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4741, "upload_time": "2016-10-12T10:39:42", "url": "https://files.pythonhosted.org/packages/20/68/864e2274d1a443dfc46930212a930066cc0b0603744e6b9dfe4e368ddecf/docker-compose-swarm-mode-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "dd906a1889161f78ec6f44de129733cb", "sha256": "1889b23fdfd9320b44df22c13def44f7b20db54d324efdc9046b3825ed315069" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.2.2.tar.gz", "has_sig": false, "md5_digest": "dd906a1889161f78ec6f44de129733cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6719, "upload_time": "2016-10-12T12:33:16", "url": "https://files.pythonhosted.org/packages/4e/56/48b8979da9522bcaf1b972222760d76538ddc2446461b05e3c1c5b02c795/docker-compose-swarm-mode-1.2.2.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "b11244f0858d358451672806a1474237", "sha256": "6eefdcb3748c77150fdaaa33111253b6a1d36267221ae4a0433a054022dc5171" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.3.0.tar.gz", "has_sig": false, "md5_digest": "b11244f0858d358451672806a1474237", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7002, "upload_time": "2016-10-17T12:37:45", "url": "https://files.pythonhosted.org/packages/54/ad/1f0147f2b32f0471cbadb3f014092202c2cd88969ea3a2b64086356080a2/docker-compose-swarm-mode-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "61c643c69eeff49c16dd3e221861188b", "sha256": "f7aae66d125c0c6419309fcbf03028245076162013a286a805c36ebff14724ce" }, "downloads": -1, "filename": "docker-compose-swarm-mode-1.4.0.tar.gz", "has_sig": false, "md5_digest": "61c643c69eeff49c16dd3e221861188b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7679, "upload_time": "2016-11-01T00:17:16", "url": "https://files.pythonhosted.org/packages/df/75/64590f16dbbabc7fb8e175ed20dc0a185c553784bd56d4c93a1bab14a0c8/docker-compose-swarm-mode-1.4.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "fbc5d47073b777f9baf7502477898922", "sha256": "86ab27da242f95aaef40cd4bcbd284d030dd902e26e9ffe0721e6d1f2e5a0ce5" }, "downloads": -1, "filename": "docker-compose-swarm-mode-2.0.0.tar.gz", "has_sig": false, "md5_digest": "fbc5d47073b777f9baf7502477898922", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11319, "upload_time": "2016-11-01T22:18:01", "url": "https://files.pythonhosted.org/packages/11/98/cc96ec66229b54221f5f9f13b8b84f5bf20ddf90d84be3b09d9601cfaf9e/docker-compose-swarm-mode-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "e957e42ca5c45e3f86ac14dd4935132e", "sha256": "c1cc3c35da292c272e99d622ea4ba11e07621bbfa792f079db83095ae7211f16" }, "downloads": -1, "filename": "docker-compose-swarm-mode-2.1.0.tar.gz", "has_sig": false, "md5_digest": "e957e42ca5c45e3f86ac14dd4935132e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12110, "upload_time": "2016-12-18T10:43:05", "url": "https://files.pythonhosted.org/packages/02/00/2101ca3b8c9a7d7c4e9927b62169d3147a5e1d5d89466c5e8f8bd9af7a58/docker-compose-swarm-mode-2.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e957e42ca5c45e3f86ac14dd4935132e", "sha256": "c1cc3c35da292c272e99d622ea4ba11e07621bbfa792f079db83095ae7211f16" }, "downloads": -1, "filename": "docker-compose-swarm-mode-2.1.0.tar.gz", "has_sig": false, "md5_digest": "e957e42ca5c45e3f86ac14dd4935132e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12110, "upload_time": "2016-12-18T10:43:05", "url": "https://files.pythonhosted.org/packages/02/00/2101ca3b8c9a7d7c4e9927b62169d3147a5e1d5d89466c5e8f8bd9af7a58/docker-compose-swarm-mode-2.1.0.tar.gz" } ] }