{"id":23854920,"url":"https://github.com/aventer-ug/mesos-compose","last_synced_at":"2025-09-08T02:30:59.516Z","repository":{"id":38738297,"uuid":"424740567","full_name":"AVENTER-UG/mesos-compose","owner":"AVENTER-UG","description":"Container orchestrator for Apache Mesos","archived":false,"fork":false,"pushed_at":"2025-05-21T21:41:39.000Z","size":2513,"stargazers_count":4,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-21T22:39:28.763Z","etag":null,"topics":["docker","docker-compose","mesos","mesos-framework"],"latest_commit_sha":null,"homepage":"https://aventer-ug.github.io/mesos-compose/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AVENTER-UG.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["AVENTER-UG"],"custom":["https://www.paypal.com/donate/?hosted_button_id=H553XE4QJ9GJ8"],"liberapay":"mesos"}},"created_at":"2021-11-04T21:08:00.000Z","updated_at":"2025-05-21T21:41:42.000Z","dependencies_parsed_at":"2023-02-17T00:15:58.904Z","dependency_job_id":"2ff6a8d6-c41e-4e82-88b9-488aa5a34178","html_url":"https://github.com/AVENTER-UG/mesos-compose","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/AVENTER-UG/mesos-compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AVENTER-UG%2Fmesos-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AVENTER-UG%2Fmesos-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AVENTER-UG%2Fmesos-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AVENTER-UG%2Fmesos-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AVENTER-UG","download_url":"https://codeload.github.com/AVENTER-UG/mesos-compose/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AVENTER-UG%2Fmesos-compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274122927,"owners_count":25226018,"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","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","docker-compose","mesos","mesos-framework"],"created_at":"2025-01-03T00:19:07.602Z","updated_at":"2025-09-08T02:30:59.496Z","avatar_url":"https://github.com/AVENTER-UG.png","language":"Go","funding_links":["https://github.com/sponsors/AVENTER-UG","https://www.paypal.com/donate/?hosted_button_id=H553XE4QJ9GJ8","https://liberapay.com/mesos"],"categories":[],"sub_categories":[],"readme":"# mesos-compose\n\n[![Docs](https://img.shields.io/static/v1?label=\u0026message=Issues\u0026color=brightgreen)](https://github.com/m3scluster/compose/issues)\n[![Chat](https://img.shields.io/static/v1?label=\u0026message=Chat\u0026color=brightgreen)](https://matrix.to/#/#mesosk3s:matrix.aventer.biz?via=matrix.aventer.biz)\n[![Docs](https://img.shields.io/static/v1?label=\u0026message=Docs\u0026color=brightgreen)](https://m3scluster.github.io/compose/)\n[![GoDoc](https://godoc.org/github.com/AVENTER-UG/mesos-compose?status.svg)](https://godoc.org/github.com/AVENTER-UG/mesos-compose) \n[![Docker Pulls](https://img.shields.io/docker/pulls/avhost/mesos-compose)](https://hub.docker.com/repository/docker/avhost/mesos-compose/)\n\nMesos Framework to use docker-compose based files.\n\n## Funding\n\n[![](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/donate/?hosted_button_id=H553XE4QJ9GJ8)\n\n\n## Issues\n\nTo open an issue, please use this place: https://github.com/m3scluster/compose/issues\n\n## Requirements\n\n- Apache Mesos min 1.6.0\n- Mesos with SSL and Authentication is optional\n- Redis Database\n\n## Run Framework\n\nThe following environment parameters are only a example. All parameters and the default values are documented in \nthe `init.go` file (real documentation will be coming later). These example assume, that we run mesos-mini.\n\n### Step 1\n\nRun a redis server:\n\n```Bash\ndocker run --rm --name redis -d -p 6379:6379 redis\n```\n\n### Step 2\n\nmesos-compose needs some parameters to connect to Mesos. The following serve only as an example.\n\n```Bash\nexport MESOS_SSL=\"false\"\nexport LOGLEVEL=\"DEBUG\"\nexport DOMAIN=\".mini\"\nexport AUTH_USERNAME=\"user\"\nexport AUTH_PASSWORD=\"password\"\nexport PORTRANGE_FROM=31000\nexport PORTRANGE_TO=32000\nexport SKIP_SSL=true\n```\n\n### Step 3\n\nBefore we launch mesos-compose, we create dedicated network in docker.\n\n```Bash\ndocker network create --subnet 10.40.0.0/24 mini\n```\n\n### Step 4\n\nNow mesos-compose can be started:\n\n```Bash\n./mesos-compose\n```\n\n### Mesos-Compose in real Apache Mesos environments\n\nIn real mesos environments, we have to set at least the following environment variables:\n\n```Bash\nexport MESOS_MASTER=\"leader.mesos:5050\"\nexport MESOS_USERNAME=\"\"\nexport MESOS_PASSWORD=\"\"\n```\n\nAlso the following could be usefull.\n\n```Bash\nexport REDIS_SERVER=\"127.0.0.1:6379\"\nexport REDIS_PASSWORD=\"\"\nexport REDIS_DB=\"1\"\nexport MESOS_CNI=\"weave\"\n```\n\n## Example\n\nThe compose file:\n\n```yaml\n## This is an example of all supported parameters\n\nversion: '3.9'\n\nservices:\n  app:\n    image: alpine:latest\n    command: \"sleep\"\n    arguments: [\"1000\"]\n    restart: always\n    volumes:\n      - \"12345test:/tmp\"\n    environment:\n      MYSQL_HOST: test\n    hostname: test\n    container_name: test\n    container_type: docker\n    shell: true\n    mesos:\n      task_name: \"mc:test:app1\" # an alternative taskname\n      executer:\n        command: \"/mnt/mesos/sandbox/my-custom-executor\"\n      fetch:\n        - value: http://localhost/my-custom-executor\n          executable: true\n\t\t\t\t\textract:  false\n\t\t\t\t\tcache: false\n    labels:\n      traefik.enable: \"true\"\n      traefik.http.routers.test.entrypoints: \"web\"\n      traefik.http.routers.test.service: \"mc_test_app1_80\" # if an alternative taskname is set, we have to use it here too\n      traefik.http.routers.test.rule: \"HostRegexp(`example.com`, `{subdomain:[a-z]+}.example.com`)\"\n    network_mode: \"BRIDGE\" # network mode always overwrite the driver under networks (line 84)\n    network: default\n    networks:\n      default:\n        aliases:\n          - test # alias hostname\n    gpus:\n      driver: \"nvidia\"\n      device: 1\n    ports:\n      - \"8080:80\"\n      - \"9090\"\n      - \"8081:81/tcp\"\n      - \"8082:82/udp\"\n      - \"8082:82/http\"\n      - \"8082:82/https\"\n      - \"8082:82/h2c\"\n      - \"8082:82/wss\"\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n      nofile:\n        soft: 65536\n        hard: 65536\n    healthcheck:\n      delay_seconds: 15\n      interval_seconds: 10\n      timeout_seconds: 20\n      consecutive_failures: 3\n      grace_period_seconds: 10\n      command:\n        value: \"mysqladmin ping -h localhost\"\n      http:\n        scheme:\n        port:\n        path:\n        statuses:\n          - 200\n      tcp:\n        port:\n    deploy:\n      runtime: \"runcvm\"\n      attributes:\n          - \"gpus: True\"\n          - \"airflow: True\"\n      placement:\n        constraints:\n          - \"node.hostname==localhost\"\n          - \"node.platform.os==linux\"\n          - \"node.platform.arch==arm\"\n          - \"unique\"\n      replicas: 1\n      resources:\n        limits:\n          cpus: 0.01\n          memory: 50\n\nnetworks:\n  default:\n    external: true\n    name: mesos-cni\n    driver: user\n\nvolumes:\n  12345test:\n    driver: local\n\n```\n\n\nPush these compose file to the framework. Every compose file needs to have an\nown project name.\n\n```bash\ncurl -X PUT http://localhost:10000/api/compose/v0/\u003cPROJECTNAME\u003e --data-binary @docs/example/docker-compose.yml\n```\n\n![image_2021-11-08-11-33-09](vx_images/image_2021-11-08-11-33-09.png)\n\n![image_2021-11-08-11-33-47](vx_images/image_2021-11-08-11-33-47.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faventer-ug%2Fmesos-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faventer-ug%2Fmesos-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faventer-ug%2Fmesos-compose/lists"}