{ "info": { "author": "Anthon van der Neut", "author_email": "a.van.der.neut@ruamel.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "==============\n``dc2service``\n==============\n\nThe ``dc2service`` utility generates configuration files for\n``systemd``/``Upstart`` based on a single ``docker-compose`` YAML input file.\n\nThe init type is autodetected, but can be overruled from the command-line.\n\nThe service name is determinted by the ``container_name`` entries for all\nthe services in the YAML file. Each service **has to have** a ``container_name``\nspecified.\n\nAs ``docker-compose`` YAML file format doesn't allow for\nextra metadata fields, two comment entries at the beginning of the\nYAML file are parsed for a description and author.\n\nIf the version 2 YAML file format is used you should consider using\n``ruamel.dcw`` as wrapper for ``docker-compose``, if you do the\ncomments are not necessary and you can specify ``author`` and\n``description`` under the top level ``user-data`` key.\n\nIf external ports are specified (i.e. of the form \"ip:ip\") then the\nexternal port numbers are extended to the description.\n\nThe file generation is template based and can easily be adjusted to your needs.\nTheir location can be viewed by doing ``dc2service templates``\n\nExample version 2 input YAML file for Mongo DB \n----------------------------------------------\n\nIn a version 1 ``docker-compose.yml`` and using ``ruamel.dcw`` \nyou can set the ``author`` and ``description`` conveniently as normal\nkey-value pairs, and also specify a default for environment variables::\n\n version: \"2\"\n user-data:\n author: Anthon van der Neut \n description: mongo container\n env-variables:\n DOCKER_MONGO_PORT: 27017\n DOCKER_MONGO_BASE_DIR: /data1/DB/mongo\n services:\n mongodb:\n container_name: mongo\n image: mongo:2.4\n volumes:\n - ${DOCKER_MONGO_BASE_DIR}:/data/db\n ports:\n - ${DOCKER_MONGO_PORT}:27017\n\n.. example code docker-compose.yml\n\n\nExample version 1 input YAML file for Mongo DB \n----------------------------------------------\n\nAs version 1 ``docker-compose.yml`` file for single service running\nMongo DB with an external (i.e. host oriented) port::\n\n # author: Anthon van der Neut \n # description: mongo container\n mongodb:\n container_name: mongo\n image: mongo:2.4\n volumes:\n - /data1/DB/mongo:/data/db\n ports:\n - 27017:27017\n\n.. example code docker-compose-1.yml\n\n\n``systemd``\n-----------\n\nThe command ``dc2service --systemd generate /opt/docker/mongo/docker-compose.yml`` will\ngenerate the file ``/etc/systemd/system/mongo-docker.service``::\n\n [Unit]\n Description=mongo container on port 27017\n # Author = Anthon van der Neut (dc2service 0.1.0.dev)\n Requires=docker.service\n After=docker.service\n\n [Service]\n Restart=always\n ExecStart=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml up --no-recreate\n ExecStop=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml stop\n\n [Install]\n WantedBy=multi-user.target\n\n.. example code mongo-docker-1.service\n\nIf you have ``ruamel.dcw`` installed ``.../bin/docker-compose`` will be ``.../bin/dcw``\n\nUpstart\n-------\n\nThe command ``dc2service --upstart generate /opt/docker/mongo/docker-compose.yml`` will\ngenerate the file ``/etc/init/mongo-docker.conf``::\n\n description \"mongo container on port 27017\"\n author \"Anthon van der Neut (dc2service 0.1.0.dev)\"\n start on filesystem and started docker\n stop on runlevel [!2345]\n respawn\n\n pre-start script\n /opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml up -d --no-recreate\n end script\n\n script\n sleepWhileAppIsUp(){\n while docker ps --filter=name=mongo | grep -qF mongo ; do\n sleep 2\n done\n }\n\n sleepWhileAppIsUp\n end script\n\n post-stop script\n if docker ps --filter=name=mongo | grep -qF mongo; then\n /opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml stop\n fi\n end script\n\n.. example code mongo-docker-1.conf\n\nIf you have ``ruamel.dcw`` installed ``.../bin/docker-compose`` will be ``.../bin/dcw``\n\n\nExpanding environment variables\n-------------------------------\n\nIf you use environment variables in a version 1 docker-compose.yml\nfile in your YAML file they will be expanded if the are of the form\n`${XYZ}`. The other form `$XYZ` is not expanded. You should however\nconsider installing ``ruamel.dcw`` and using the version 2 format as\nthat can handle the expansion dynamically and allow defaults to be\nspecified in the YAML file, as well as storing the environment variables for the\nDockerfile to use.\n\nExpansion is only relevant for the parts that are copied (external\nport numbers, name of container).\n\nIf you use this feature make sure that the environment variables are set in the\nconf file. In ``systemd`` with::\n\n [Service]\n Environment=DOCKERIMAPPORT=143\n\nand in Upstart::\n\n env DOCKERIMAPPORT=143\n\n``dc2service`` will try to insert the right definitions for you.\n\n**For version 2 files and when using ``ruamel.dcw`` this is not necessary and \ntherefore not done**\n\nFinding ``docker-compose``\n--------------------------\n\nAs the full path to ``docker-compose`` or ``dcw`` will be inserted in\nthe configuration file, this path needs to be\navailable. ``dc2service`` will search\n``/opt/util/docker-compose/bin/`` and the PATH environement variable\nfor the locations of ``dcw`` and ``docker-compose``. If your\n``docker-compose`` is not in your path you can hand the full path in\nwith the option ``--docker-compose`` or specify this in the file\n``~/.config/ruamel_dc2service/ruamel_dc2service.pon``::\n\n dict(\n glbl={'docker-compose': '/opt/util/docker-compose/bin/docker-compose'},\n )", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/ruamel/dc2service", "keywords": "docker-compose upstart systemd init service", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "ruamel.dc2service", "package_url": "https://pypi.org/project/ruamel.dc2service/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ruamel.dc2service/", "project_urls": { "Homepage": "https://bitbucket.org/ruamel/dc2service" }, "release_url": "https://pypi.org/project/ruamel.dc2service/0.3.1/", "requires_dist": [ "ruamel.appconfig", "ruamel.std.argparse", "ruamel.std.pathlib", "ruamel.yaml" ], "requires_python": "", "summary": "generate init configuration file (systemd/Upstart) from docker-compose.yml", "version": "0.3.1" }, "last_serial": 1974910, "releases": { "0.1.0.dev0": [], "0.2.0": [ { "comment_text": "", "digests": { "md5": "49e9c9ce2a2879f43fdb1d448de4c5d1", "sha256": "90df2965b95f6a40f1a0cca077cdf4d887be4a68f3567048e2c26111db128886" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "49e9c9ce2a2879f43fdb1d448de4c5d1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11499, "upload_time": "2016-01-24T19:02:23", "url": "https://files.pythonhosted.org/packages/9b/ec/173eb57eaa84f2e28a9620b39f138b888a2e61b8ad2ddec031ff80cfa71c/ruamel.dc2service-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d202c61e50243db601fe61664e252d70", "sha256": "3415f3310209a6429e583c2ed4f4d7b8f057a29c032d6cfb148462ee37ab4742" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d202c61e50243db601fe61664e252d70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14486, "upload_time": "2016-01-24T19:02:14", "url": "https://files.pythonhosted.org/packages/9b/a7/b313a339c9ec089c44fe01b75d35707aadbec250a0562c941f0bdc328f0e/ruamel.dc2service-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "da8f24f902325af3c4e9d9bd91ee3d2f", "sha256": "aab4b7c49bf0cc173fcc874215bbd43ec8d7ca334698bef817cf2408e1c895d4" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "da8f24f902325af3c4e9d9bd91ee3d2f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11636, "upload_time": "2016-01-25T10:29:30", "url": "https://files.pythonhosted.org/packages/ac/c2/eec1d493e79090df992b2824ffc71e583a9a4e05c77257c9dd4c476eecbb/ruamel.dc2service-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b374249943ed76aa6b2120ca9b97bd1b", "sha256": "554a7b951e7b744236229ccacd7044ae92bdea7aa025460147a29ec33630bf4a" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b374249943ed76aa6b2120ca9b97bd1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14644, "upload_time": "2016-01-25T10:14:51", "url": "https://files.pythonhosted.org/packages/82/21/f43bb6c61cfed23c03b9af9a2f289f79297fa189445cd87679d738d34567/ruamel.dc2service-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "26562c83bd0acef29f43afb21c88a696", "sha256": "b4c880f73741306ad6751ba45521fc03cbc2464ae7c677f6b92dbc696df84cec" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "26562c83bd0acef29f43afb21c88a696", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11916, "upload_time": "2016-01-26T07:16:08", "url": "https://files.pythonhosted.org/packages/f6/7b/e04b49dec624cd787edae18a4c9b4a78ea973b19fb8553b909f0fed8b2b9/ruamel.dc2service-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81b83cf21ac77d6467149285b9ddabde", "sha256": "4d9e00fae0b85dd22d3fb445d6d4635d122a427422d2769892e410148c59bd40" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.2.tar.gz", "has_sig": false, "md5_digest": "81b83cf21ac77d6467149285b9ddabde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14863, "upload_time": "2016-01-26T07:13:45", "url": "https://files.pythonhosted.org/packages/bb/81/5d1114c19b8597565652049824c674ae540bc482eba3727adbbfa7218d17/ruamel.dc2service-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "7dc06928b4734cac3d162eca5b51d1e9", "sha256": "65237639bb13b4ab200cf32d968d169ae9e0e7d25c62eac4c05f3eea0ed65f9c" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7dc06928b4734cac3d162eca5b51d1e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11919, "upload_time": "2016-01-26T07:19:44", "url": "https://files.pythonhosted.org/packages/1c/0e/6f89c8716a9bc1f93f9f12297e3f8a2c6f54aa39fbe5b187feecbf72a311/ruamel.dc2service-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d63e0cd610ffae2cac5c899db5b320aa", "sha256": "6622b31de89bcd7a0311029db2d28ccb787a055ccb3651ec8bfde82d247215e5" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.3.tar.gz", "has_sig": false, "md5_digest": "d63e0cd610ffae2cac5c899db5b320aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14878, "upload_time": "2016-01-26T07:19:15", "url": "https://files.pythonhosted.org/packages/f4/72/3b0f53ef53170b08967b97f32ae655880f6f50bcb9946d19eb8709b53f5b/ruamel.dc2service-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "bb267684d3c89864c07fa38b5c9d3da2", "sha256": "dd35e0fe8e84f5e9392c447f8c44426742298beba48e6b395f8902605b96d0bc" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb267684d3c89864c07fa38b5c9d3da2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12011, "upload_time": "2016-01-26T18:37:25", "url": "https://files.pythonhosted.org/packages/03/c6/e20ac27665dc9eb9fed6e9455d7b283f2a75d8de6b4719843efe4383cefe/ruamel.dc2service-0.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "903c4912a9a1ea9cdfee0e76ac936791", "sha256": "30366ab21d34bf1dcf2617cd2e68a84adbf9186f9283de01c57bed3324e53383" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.4.tar.gz", "has_sig": false, "md5_digest": "903c4912a9a1ea9cdfee0e76ac936791", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14964, "upload_time": "2016-01-26T18:36:56", "url": "https://files.pythonhosted.org/packages/a8/df/1610df536cefa152f41feeade27fcb096a8894fdbc486bc20d22e55ba2fd/ruamel.dc2service-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "e84758c958c193590939e2989756f25e", "sha256": "9644f869262935601e1df284c5138e9be77bbbb9b631195541f1473582684c59" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e84758c958c193590939e2989756f25e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12980, "upload_time": "2016-01-26T19:17:26", "url": "https://files.pythonhosted.org/packages/b6/0b/a80e7baee8d9589e1556957f223c3e5e07464826335e45a820e165747f94/ruamel.dc2service-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be21e59e506656650334b192396d19f8", "sha256": "4c5355648fab3b90c1288e941c68b0b891c3e219ece50d3ab5d4fdae1f279abd" }, "downloads": -1, "filename": "ruamel.dc2service-0.2.5.tar.gz", "has_sig": false, "md5_digest": "be21e59e506656650334b192396d19f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16050, "upload_time": "2016-01-26T19:16:55", "url": "https://files.pythonhosted.org/packages/bb/75/19e20c5f88b4c6c5f6d7875beabf716ae75001561a1adb46f5b4c4ce90d4/ruamel.dc2service-0.2.5.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ee511d8bdc2d9a10df4b6df111c5bc6b", "sha256": "9fe57d8135b101659b571452488a405fdad590dbe30f1695b4ae1264fcf55ee7" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee511d8bdc2d9a10df4b6df111c5bc6b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14712, "upload_time": "2016-02-24T12:24:54", "url": "https://files.pythonhosted.org/packages/10/e8/f31c790bb3dd329792e5520233f7d947a13109a8617b3b1d15f780ba8585/ruamel.dc2service-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5da96449481d3be4cd1c0cc7c2ece306", "sha256": "9e08276626761664011e6c4caae1f6265813bea61585814b07a8799b20ac8047" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5da96449481d3be4cd1c0cc7c2ece306", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18007, "upload_time": "2016-02-24T12:25:21", "url": "https://files.pythonhosted.org/packages/9b/87/4012d20b8aeb1c64bcea5de7e6dcd00b041db52b0c77c1e9ba5000e13650/ruamel.dc2service-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3521ca327cc23bd496607eef2a135459", "sha256": "fbc53679ee98cd4eb724b0898e74b10d7a68b9682f6f502b9cd3efb8b98ad4ca" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3521ca327cc23bd496607eef2a135459", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14771, "upload_time": "2016-02-24T20:24:08", "url": "https://files.pythonhosted.org/packages/b5/47/ead622da81f38a1269f29eefe12ceb6008a88773d8c28ab5e6cfbb1e2967/ruamel.dc2service-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13fe5bb0ff38e0b4c74abeff9282e91f", "sha256": "25257aafc23f7101cfd560c8d92587f2e349675caf653e09d92af72b5cb0a691" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.1.tar.gz", "has_sig": false, "md5_digest": "13fe5bb0ff38e0b4c74abeff9282e91f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18052, "upload_time": "2016-02-24T20:24:14", "url": "https://files.pythonhosted.org/packages/2d/ee/b51f1e27e8a4749e8869dc6db8b105269324b88481757da13d26f787354a/ruamel.dc2service-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3521ca327cc23bd496607eef2a135459", "sha256": "fbc53679ee98cd4eb724b0898e74b10d7a68b9682f6f502b9cd3efb8b98ad4ca" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3521ca327cc23bd496607eef2a135459", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14771, "upload_time": "2016-02-24T20:24:08", "url": "https://files.pythonhosted.org/packages/b5/47/ead622da81f38a1269f29eefe12ceb6008a88773d8c28ab5e6cfbb1e2967/ruamel.dc2service-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13fe5bb0ff38e0b4c74abeff9282e91f", "sha256": "25257aafc23f7101cfd560c8d92587f2e349675caf653e09d92af72b5cb0a691" }, "downloads": -1, "filename": "ruamel.dc2service-0.3.1.tar.gz", "has_sig": false, "md5_digest": "13fe5bb0ff38e0b4c74abeff9282e91f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18052, "upload_time": "2016-02-24T20:24:14", "url": "https://files.pythonhosted.org/packages/2d/ee/b51f1e27e8a4749e8869dc6db8b105269324b88481757da13d26f787354a/ruamel.dc2service-0.3.1.tar.gz" } ] }