{"id":13617248,"url":"https://github.com/micahhausler/container-transform","last_synced_at":"2025-05-15T07:03:47.332Z","repository":{"id":24778585,"uuid":"28192104","full_name":"micahhausler/container-transform","owner":"micahhausler","description":"Transforms docker-compose, ECS, and Marathon configurations","archived":false,"fork":false,"pushed_at":"2020-05-11T15:13:48.000Z","size":171,"stargazers_count":1413,"open_issues_count":28,"forks_count":146,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-05-15T07:02:58.627Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/micahhausler.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-18T16:44:20.000Z","updated_at":"2025-04-25T05:32:25.000Z","dependencies_parsed_at":"2022-08-23T05:41:18.785Z","dependency_job_id":null,"html_url":"https://github.com/micahhausler/container-transform","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahhausler%2Fcontainer-transform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahhausler%2Fcontainer-transform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahhausler%2Fcontainer-transform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahhausler%2Fcontainer-transform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micahhausler","download_url":"https://codeload.github.com/micahhausler/container-transform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254291961,"owners_count":22046424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T20:01:39.037Z","updated_at":"2025-05-15T07:03:47.307Z","avatar_url":"https://github.com/micahhausler.png","language":"Python","funding_links":[],"categories":["HarmonyOS","Python","Configuration \u0026 Policy Automation"],"sub_categories":["Windows Manager"],"readme":".. image:: https://travis-ci.org/micahhausler/container-transform.png\n   :target: https://travis-ci.org/micahhausler/container-transform\n\n.. image:: https://coveralls.io/repos/micahhausler/container-transform/badge.png?branch=master\n    :target: https://coveralls.io/r/micahhausler/container-transform?branch=master\n\n.. image:: https://readthedocs.org/projects/container-transform/badge/?version=latest\n    :target: http://container-transform.readthedocs.org/en/latest/?badge=latest\n    :alt: Documentation Status\n\n\ncontainer-transform\n===================\ncontainer-transform is a small utility to transform various docker container\nformats to one another.\n\nCurrently, container-transform can parse and convert:\n\n* Kubernetes Pod specs\n* ECS task definitions\n* Docker-compose configuration files\n* Marathon Application Definitions or Groups of Applications\n* Chronos Task Definitions\n\nand it can output to:\n\n* Systemd unit files\n\n\nExamples\n--------\n\nCompose to Kubernetes\n~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n    $ cat docker-compose.yaml\n    version: '2'\n    services:\n      etcd:\n        cpu_shares: 102.4\n        entrypoint: /usr/local/bin/etcd -data-dir /var/etcd/data -listen-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001\n          -advertise-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001 -initial-cluster-token\n          skydns-etcd\n        image: gcr.io/google_containers/etcd-amd64:2.2.1\n        mem_limit: 524288000b\n      healthz:\n        command: -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 \u003e/dev/null\n          -port=8080\n        cpu_shares: 10.24\n        image: gcr.io/google_containers/exechealthz:1.0\n        mem_limit: 20971520b\n        ports:\n        - '8080'\n      kube2sky:\n        command: --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml --domain=cluster.local\n        cpu_shares: 102.4\n        image: gcr.io/google_containers/kube2sky:1.14\n        mem_limit: 209715200b\n        volumes:\n        - /usr/share/ca-certificates:/etc/ssl/certs\n        - /etc/kubernetes/worker-kubeconfig.yaml:/etc/kubernetes/worker-kubeconfig.yaml:ro\n        - /etc/kubernetes/ssl:/etc/kubernetes/ssl:ro\n      skydns:\n        command: -machines=http://127.0.0.1:4001 -addr=0.0.0.0:53 -ns-rotate=false -domain=cluster.local.\n        cpu_shares: 102.4\n        image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c\n        mem_limit: 209715200b\n        ports:\n        - 53/udp\n        - '53'\n    $ container-transform -i compose -o kubernetes docker-compose.yaml\n    apiVersion: extensions/v1beta1\n    kind: Deployment\n    metadata:\n      labels:\n        app: null\n        version: latest\n      name: null\n      namespace: default\n    spec:\n      replicas: 1\n      selector:\n        matchLabels:\n          app: null\n          version: latest\n      template:\n        metadata:\n          labels:\n            app: null\n            version: latest\n        spec:\n          containers:\n          - command:\n            - /usr/local/bin/etcd\n            - -data-dir\n            - /var/etcd/data\n            - -listen-client-urls\n            - http://127.0.0.1:2379,http://127.0.0.1:4001\n            - -advertise-client-urls\n            - http://127.0.0.1:2379,http://127.0.0.1:4001\n            - -initial-cluster-token\n            - skydns-etcd\n            image: gcr.io/google_containers/etcd-amd64:2.2.1\n            name: etcd\n            resources:\n              limits:\n                cpu: 100.0m\n                memory: 500Mi\n          - args:\n            - -cmd=nslookup\n            - kubernetes.default.svc.cluster.local\n            - 127.0.0.1\n            - '\u003e/dev/null'\n            - -port=8080\n            image: gcr.io/google_containers/exechealthz:1.0\n            name: healthz\n            ports:\n            - containerPort: 8080\n              protocol: TCP\n            resources:\n              limits:\n                cpu: 10.0m\n                memory: 20Mi\n          - args:\n            - --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml\n            - --domain=cluster.local\n            image: gcr.io/google_containers/kube2sky:1.14\n            name: kube2sky\n            resources:\n              limits:\n                cpu: 100.0m\n                memory: 200Mi\n            volumeMounts:\n            - mountPath: /etc/ssl/certs\n              name: usr-share-ca-certificates\n            - mountPath: /etc/kubernetes/worker-kubeconfig.yaml\n              name: etc-kubernetes-worker-kubeconfig.yaml\n              readOnly: true\n            - mountPath: /etc/kubernetes/ssl\n              name: etc-kubernetes-ssl\n              readOnly: true\n          - args:\n            - -machines=http://127.0.0.1:4001\n            - -addr=0.0.0.0:53\n            - -ns-rotate=false\n            - -domain=cluster.local.\n            image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c\n            name: skydns\n            ports:\n            - containerPort: 53\n              protocol: UDP\n            - containerPort: 53\n              protocol: TCP\n            resources:\n              limits:\n                cpu: 100.0m\n                memory: 200Mi\n          volumes:\n          - hostPath:\n              path: /etc/kubernetes/ssl\n            name: etc-kubernetes-ssl\n          - hostPath:\n              path: /etc/kubernetes/worker-kubeconfig.yaml\n            name: etc-kubernetes-worker-kubeconfig.yaml\n          - hostPath:\n              path: /usr/share/ca-certificates\n            name: usr-share-ca-certificates\n\nCompose to ECS\n~~~~~~~~~~~~~~\n\n::\n\n    $ cat docker-compose.yml | container-transform  -v\n    {\n        \"family\": \"python-app\",\n        \"volumes\": [\n            {\n                \"name\": \"host_logs\",\n                \"host\": {\n                    \"sourcePath\": \"/var/log/myapp\"\n                }\n            }\n        ],\n        \"containerDefinitions\": [\n            {\n                \"memory\": 1024,\n                \"image\": \"postgres:9.3\",\n                \"name\": \"db\",\n                \"essential\": true\n            },\n            {\n                \"memory\": 128,\n                \"image\": \"redis:latest\",\n                \"name\": \"redis\",\n                \"essential\": true\n            },\n            {\n                \"name\": \"web\",\n                \"memory\": 64,\n                \"command\": [\n                    \"uwsgi\",\n                    \"--json\",\n                    \"uwsgi.json\"\n                ],\n                \"mountPoints\": [\n                    {\n                        \"sourceVolume\": \"host_logs\",\n                        \"containerPath\": \"/var/log/uwsgi/\"\n                    }\n                ],\n                \"environment\": [\n                    {\n                        \"name\": \"AWS_ACCESS_KEY_ID\",\n                        \"value\": \"AAAAAAAAAAAAAAAAAAAA\"\n                    },\n                    {\n                        \"name\": \"AWS_SECRET_ACCESS_KEY\",\n                        \"value\": \"1111111111111111111111111111111111111111\"\n                    }\n                ],\n                \"essential\": true\n            }\n        ]\n    }\n    Container web is missing required parameter \"image\".\n    Container web is missing required parameter \"cpu\".\n\nQuick Help\n----------\n::\n\n    Usage: container-transform [OPTIONS] [INPUT_FILE]\n\n      container-transform is a small utility to transform various docker\n      container formats to one another.\n\n      Default input type is compose, default output type is ECS\n\n      Default is to read from STDIN if no INPUT_FILE is provided\n\n      All options may be set by environment variables with the prefix \"CT_\"\n      followed by the full argument name.\n\n    Options:\n      -i, --input-type [ecs|compose|marathon|chronos|kubernetes]\n      -o, --output-type [ecs|compose|systemd|marathon|chronos|kubernetes]\n      -v, --verbose / --no-verbose    Expand/minify json output\n      -q, --quiet                     Silence error messages\n      --version                       Show the version and exit.\n      -h, --help                      Show this message and exit.\n\nDocker Image\n------------\n\nTo get the docker image, run::\n\n    docker pull micahhausler/container-transform:latest\n\nTo run the docker image::\n\n    docker run --rm -v $(pwd):/data/ micahhausler/container-transform  docker-compose.yml\n\n    # or\n    cat docker-compose.yml | docker run --rm -i micahhausler/container-transform\n\n\nInstallation\n------------\n\nTo install the latest release (Python 3 only), type::\n\n    pip install container-transform\n\nTo install the latest code directly from source, type::\n\n    pip install git+git://github.com/micahhausler/container-transform.git\n\nDocumentation\n-------------\n\nFull documentation is available at http://container-transform.readthedocs.org\n\nLicense\n-------\nMIT License (see LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicahhausler%2Fcontainer-transform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicahhausler%2Fcontainer-transform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicahhausler%2Fcontainer-transform/lists"}