{ "info": { "author": "James Pic", "author_email": "jamespic@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "compoctl: backup/restore/apply one-liner pipelines for docker-compose\n=====================================================================\n\nInstall with pip install compoctl\n\nA wrapper for the long docker-compose command that also adds a few features\nthat should be considered experimental, in waiting for refutation or upstream\ncontribution - which won't break BC because compoctl decorates docker-compose\ncommands.\n\ncompoctl apply: the one-liner pipeline for docker-compose\n---------------------------------------------------------\n\nChain pull/build/down/up/logs/ps, nice to have for hacking and even more in\nautomated deploys::\n\n compoctl -f ./foo.yml apply\n\n # will run:\n docker-compose -f ./foo.yml pull\n docker-compose -f ./foo.yml build\n docker-compose -f ./foo.yml down\n docker-compose -f ./foo.yml up -d\n docker-compose -f ./foo.yml logs\n docker-compose -f ./foo.yml ps\n\ncompoctl backup\n---------------\n\nBackup data into ./backup.\n\nExample configuration that makes it work as-is::\n\n volumes:\n - ./backup/postgres:/backup\n labels:\n io.yourlabs.backup.cmd: pg_dumpall -U postgres -f /backup/data.dump\n\nThis will dump pg data into ./backup/postgres, and also export\ndocker-compose running config into ./backup/docker-compose.restore.yml\n\nIt will also execute the docker-compose.backup.yml if it exists. This is\nwere you can spawn a container that mounts ./backup and proceeds to the\nsecure backup export over the network that you want for production.\n\nTo prevent permission issues, containers should at no time write the\n./backup directory itself.\n\npre-POC state: waiting for an example chaining a docker-compose.backup.yml that\nwould spawn restic and rclone to backup the backup on a remote collection (or\nimplement retention policy feature into duplicity).\n\ncompoctl restore\n----------------\n\nCopy docker-compose.yml back from ./backup and run restore commands.\n\nThis is a destructive operation that will delete all volumes except the\nbackup volume, up each service one by one and apply the restore command.\n\nExample configuration that makes it work as-is::\n\n volumes:\n - ./backup/postgres:/backup\n labels:\n io.yourlabs.restore.cmd: psql -U postgres -f /backup/data.dump\n\nNote that the ./backup directory must have been provisioned with the backup\ncommand priorly.\n\nAlso, the cluster will be unusable/down during the restore operation.", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://yourlabs.io/oss/compoctl", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "compoctl", "package_url": "https://pypi.org/project/compoctl/", "platform": "", "project_url": "https://pypi.org/project/compoctl/", "project_urls": { "Homepage": "https://yourlabs.io/oss/compoctl" }, "release_url": "https://pypi.org/project/compoctl/0.2.1.post3/", "requires_dist": null, "requires_python": "", "summary": "Wrap docker-compose to acheive dev-perfect CI", "version": "0.2.1.post3" }, "last_serial": 5257278, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "64d9cc1e83864fd686bb385f8b3ad6fe", "sha256": "af360510192621fa4e25c0f0041073db0fd0723ef6264bc26fab5991e748a85f" }, "downloads": -1, "filename": "compoctl-0.1.0.tar.gz", "has_sig": false, "md5_digest": "64d9cc1e83864fd686bb385f8b3ad6fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4641, "upload_time": "2019-02-18T13:20:55", "url": "https://files.pythonhosted.org/packages/31/1e/358f77aafe5a108d977143fca2561b9789043967f8b6f353ec91a5a304b7/compoctl-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "02bed3b9ccef521c8c84581290b6417d", "sha256": "56eb3c59f450eab123c794aeeca7037f9ce2db4e0b312aebe23ad075a54e3320" }, "downloads": -1, "filename": "compoctl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "02bed3b9ccef521c8c84581290b6417d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4670, "upload_time": "2019-02-23T01:07:12", "url": "https://files.pythonhosted.org/packages/ef/f6/b744062dc602a018f39dc566706865ca75b5d38f07edc25b111cc2e69392/compoctl-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "12bf3bec0ca1a581308dfcb49a3fe05d", "sha256": "2e574e2790c80296359eadf6e93db4d105cf7a640cbcfd0439842955b7e3cdd2" }, "downloads": -1, "filename": "compoctl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "12bf3bec0ca1a581308dfcb49a3fe05d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4678, "upload_time": "2019-02-23T01:29:54", "url": "https://files.pythonhosted.org/packages/05/2f/0c9b191f80729450cbd7436e33e9e83c5b9bd263f0e1117b1e992d7a405a/compoctl-0.1.2.tar.gz" } ], "0.1.2.post1": [ { "comment_text": "", "digests": { "md5": "d86ed2173bdde4895e32e9273a819aef", "sha256": "56b07ee6c8dfb641018bd605735e329af465683fd8769bff975efbeac978c9e1" }, "downloads": -1, "filename": "compoctl-0.1.2.post1.tar.gz", "has_sig": false, "md5_digest": "d86ed2173bdde4895e32e9273a819aef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4693, "upload_time": "2019-03-14T22:12:12", "url": "https://files.pythonhosted.org/packages/22/53/97f202cdeaaa91ea9597067bf4bd6151adc0e2b30539b40a1c3396b65de4/compoctl-0.1.2.post1.tar.gz" } ], "0.1.2.post2": [ { "comment_text": "", "digests": { "md5": "6e70375a2933980100f074fa026cc02d", "sha256": "242e9f9b6abfd45ee2aef91e7ea1f2aabd24d6ed1c09ebd1765ca58a8545b493" }, "downloads": -1, "filename": "compoctl-0.1.2.post2.tar.gz", "has_sig": false, "md5_digest": "6e70375a2933980100f074fa026cc02d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4709, "upload_time": "2019-03-14T22:13:00", "url": "https://files.pythonhosted.org/packages/d7/20/d1f4e5e16adb528235003fc141580999afb7b513c0b2099f1d0d5359d924/compoctl-0.1.2.post2.tar.gz" } ], "0.1.2.post3": [ { "comment_text": "", "digests": { "md5": "f80dca36fd75e469d062bc6cd9ddd7e5", "sha256": "c0dac0e8923049b6b4d3db06b95626e665350b77a9936b164f345845701fa09c" }, "downloads": -1, "filename": "compoctl-0.1.2.post3.tar.gz", "has_sig": false, "md5_digest": "f80dca36fd75e469d062bc6cd9ddd7e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4934, "upload_time": "2019-03-14T23:00:27", "url": "https://files.pythonhosted.org/packages/c8/7f/0a39641cd925ef076f922689c83458006981bb91ccd719a4506e9c7fde4a/compoctl-0.1.2.post3.tar.gz" } ], "0.1.3.post2": [ { "comment_text": "", "digests": { "md5": "c1b09b30bf97932dc6477e1a36bd2365", "sha256": "6d734621d25ffeac65d2ee14cbc4fd4560af7e1517e0002affed7a07947f840c" }, "downloads": -1, "filename": "compoctl-0.1.3.post2.tar.gz", "has_sig": false, "md5_digest": "c1b09b30bf97932dc6477e1a36bd2365", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4926, "upload_time": "2019-05-11T11:31:36", "url": "https://files.pythonhosted.org/packages/da/9d/42a93ba5ee59dece2c970b3613105f473acef083bec778a5d684d586cfb9/compoctl-0.1.3.post2.tar.gz" } ], "0.1.3.post3": [ { "comment_text": "", "digests": { "md5": "382406aeca8b91919d871bc0f0d25f83", "sha256": "8e11ade3bdbae85921ba82f3564d61ac60aa32c5592629a168a8838864526ca5" }, "downloads": -1, "filename": "compoctl-0.1.3.post3.tar.gz", "has_sig": false, "md5_digest": "382406aeca8b91919d871bc0f0d25f83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4928, "upload_time": "2019-05-11T11:39:34", "url": "https://files.pythonhosted.org/packages/76/c5/f33712c1e98345b0dfbf92d3b4da4f331988c4ce0daca18849b779b6f9ec/compoctl-0.1.3.post3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3d6a69295a4a2cdbd6bf12e9a170953a", "sha256": "5c73dc73d7b59ac44f6701529d6fab7b59f38e652f35d40c29e562ce2478a541" }, "downloads": -1, "filename": "compoctl-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3d6a69295a4a2cdbd6bf12e9a170953a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4913, "upload_time": "2019-05-11T11:55:03", "url": "https://files.pythonhosted.org/packages/8c/96/6c5c9a6c9d1383e4be88c1b32569b9539058855e9721671fbcf519964e51/compoctl-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "44b063e9e8a37f344283a5940ff717d9", "sha256": "321b37d0b743f46d3908e4bc2352556072456ddc32b12e772b27f5a65bb4d6f8" }, "downloads": -1, "filename": "compoctl-0.2.1.tar.gz", "has_sig": false, "md5_digest": "44b063e9e8a37f344283a5940ff717d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4916, "upload_time": "2019-05-11T17:07:15", "url": "https://files.pythonhosted.org/packages/a9/36/98bb62f925aaa1a9dad2811dd2b5b53805d064db690346f783617ad056c1/compoctl-0.2.1.tar.gz" } ], "0.2.1.post3": [ { "comment_text": "", "digests": { "md5": "e3eb9f41a8f3db49e0d95a98ba70eaf2", "sha256": "8cb48f1f585b7b060ebe41d71b37ab806b5f0e6f25334e9dd0df154095c8e73d" }, "downloads": -1, "filename": "compoctl-0.2.1.post3.tar.gz", "has_sig": false, "md5_digest": "e3eb9f41a8f3db49e0d95a98ba70eaf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4935, "upload_time": "2019-05-11T20:51:43", "url": "https://files.pythonhosted.org/packages/7b/74/4d5788242401bcd0dd97e1e891622908f4be4739db295bf034fcdf506cde/compoctl-0.2.1.post3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e3eb9f41a8f3db49e0d95a98ba70eaf2", "sha256": "8cb48f1f585b7b060ebe41d71b37ab806b5f0e6f25334e9dd0df154095c8e73d" }, "downloads": -1, "filename": "compoctl-0.2.1.post3.tar.gz", "has_sig": false, "md5_digest": "e3eb9f41a8f3db49e0d95a98ba70eaf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4935, "upload_time": "2019-05-11T20:51:43", "url": "https://files.pythonhosted.org/packages/7b/74/4d5788242401bcd0dd97e1e891622908f4be4739db295bf034fcdf506cde/compoctl-0.2.1.post3.tar.gz" } ] }