{"id":13582451,"url":"https://github.com/komuw/meli","last_synced_at":"2025-10-24T08:11:14.410Z","repository":{"id":57480849,"uuid":"87462615","full_name":"komuw/meli","owner":"komuw","description":"faster, drop in, alternative to docker-compose","archived":false,"fork":false,"pushed_at":"2023-05-11T20:39:29.000Z","size":28776,"stargazers_count":174,"open_issues_count":21,"forks_count":13,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-12-06T06:11:54.726Z","etag":null,"topics":["docker","docker-compose","go","meli"],"latest_commit_sha":null,"homepage":"","language":"Go","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/komuw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"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}},"created_at":"2017-04-06T18:38:31.000Z","updated_at":"2024-06-21T06:12:13.000Z","dependencies_parsed_at":"2024-01-14T08:00:49.330Z","dependency_job_id":"1d8635de-90bd-4f29-9d11-92be9db1d6ab","html_url":"https://github.com/komuw/meli","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komuw%2Fmeli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komuw%2Fmeli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komuw%2Fmeli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komuw%2Fmeli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/komuw","download_url":"https://codeload.github.com/komuw/meli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230423559,"owners_count":18223435,"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":["docker","docker-compose","go","meli"],"created_at":"2024-08-01T15:02:43.717Z","updated_at":"2025-10-24T08:11:09.361Z","avatar_url":"https://github.com/komuw.png","language":"Go","funding_links":[],"categories":["Misc","Go"],"sub_categories":[],"readme":"# meli            \n\n\n[![ci](https://github.com/komuw/meli/workflows/meli%20ci/badge.svg)](https://github.com/komuw/meli/actions)\n[![codecov](https://codecov.io/gh/komuw/meli/branch/master/graph/badge.svg)](https://codecov.io/gh/komuw/meli)\n[![GoDoc](https://godoc.org/github.com/komuw/meli?status.svg)](https://godoc.org/github.com/komuw/meli)\n[![Go Report Card](https://goreportcard.com/badge/github.com/komuw/meli)](https://goreportcard.com/report/github.com/komuw/meli)          \n\n\nMeli is supposed to be a faster, and drop in, alternative to docker-compose. Faster in the sense that, Meli will try to pull as many services(docker containers) \nas it can in parallel. \n\nMeli is a Swahili word meaning ship; so think of Meli as a ship carrying your docker containers safely across the treacherous container seas.\n\nIt's currently work in progress, API will remain unstable for sometime.\n\nI only intend to support docker-compose [version 3+](https://docs.docker.com/compose/compose-file/compose-versioning/)          \n\nMeli is NOT intended to replicate every feature of docker-compose, it is primarily intended to enable you to pull, build and run the services in your docker-compose file as fast as possible.          \nIf you want to exec in to a running container, use docker; if you want to run an adhoc command in a container, use docker; if you want..... you get the drift.\n\n\n# Installing/Upgrading          \nDownload a binary release for your particular OS from the [releases page](https://github.com/komuw/meli/releases)           \nWe have binaries for:                \n- linux(64bit)           \n- windows(64bit)            \n- macOS(64bit)                     \n\n\n# Usage  \n`meli --help`         \n```bash\nUsage of meli:\n  -up\n    \tBuilds, re/creates, starts, and attaches to containers for a service.\n        -d option runs containers in the background\n  -f string\n    \tpath to docker-compose.yml file. (default \"docker-compose.yml\")\n  -build\n    \tRebuild services\n  -v\tShow version information.\n  -version\n    \tShow version information.\n```\n\n`cat docker-compose.yml`                 \n```bash\nversion: '3'\nservices:\n  redis:\n    image: 'redis:3.0-alpine'\n    environment:\n      - RACK_ENV=development\n      - type=database\n    ports:\n      - \"6300:6379\"\n      - \"6400:22\"\n```           \n\n`meli -up`          \n```bash \nredis :: Pulling from library/redis \nredis :: Pulling fs layer \nredis :: Pulling fs layer \nredis :: Downloading [======================\u003e        ]  3.595kB/8.164kB\nredis :: Downloading [==============================\u003e]  8.164kB/8.164kB\nredis :: Download complete [========================\u003e]  8.164kB/8.164kB\nredis :: The server is now ready to accept connections on port 6379\n```\n\n# Usage as a library\nYou really should be using the official [docker Go sdk](https://godoc.org/github.com/moby/moby/client)         \nHowever, if you feel inclined to use meli;\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/docker/docker/client\"\n\t\"github.com/komuw/meli\"\n)\n\nfunc main() {\n\tdc := \u0026meli.DockerContainer{\n\t\tComposeService: meli.ComposeService{Image: \"busybox\"},\n\t\tLogMedium:      os.Stdout,\n\t\tFollowLogs:     true}\n\n\tctx := context.Background()\n\tcli, err := client.NewEnvClient()\n\tif err != nil {\n\t\tlog.Fatal(err, \" :unable to intialize docker client\")\n\t}\n\tdefer cli.Close()\n\n\tmeli.LoadAuth() // load dockerhub info\n\terr = meli.PullDockerImage(ctx, cli, dc)\n\tlog.Println(err)\n\n}\n```  \n\n\n# Benchmarks\nAaah, everyones' favorite vanity metric yet no one seems to know how to conduct one in a consistent and scientific manner.          \nTake any results you see here with a large spoon of salt; They are unscientific and reek of all that is wrong with most developer benchmarks.             \n\nHaving made that disclaimer,                 \n\nBenchmark test:           \n[this docker-compose file](https://github.com/komuW/meli/blob/master/testdata/docker-compose.yml)\n\nBenchmark script:               \nfor docker-compose:      \n`docker ps -aq | xargs docker rm -f; docker system prune -af; /usr/bin/time -apv docker-compose up -d`        \nfor meli:                \n`docker ps -aq | xargs docker rm -f; docker system prune -af; /usr/bin/time -apv meli -up -d`            \n\nBenchmark results(average):                       \n\n| tool           | Elapsed wall clock time(seconds) |\n| :---           |          ---:                    |\n| docker-compose |  10.411 seconds                  |\n| meli           |  3.945  seconds                  |\n\nThus, meli appears to be 2.6 times faster than docker-compose(by wall clock time).           \nYou can [checkout the current benchmark results from circleCI](https://circleci.com/gh/komuW/meli/)              \nHowever, I'm not making a tool to take docker-compose to the races.                   \n\n# Development\n#### Build                   \n`git clone git@github.com:komuw/meli.git`           \n`go build -trimpath -o meli cli/cli.go`           \n`./meli -up -f /path/to/docker-compose-file.yml`                   \n\n\n# TODO\n- add better documentation(godoc)\n- stabilise API(maybe)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomuw%2Fmeli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkomuw%2Fmeli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomuw%2Fmeli/lists"}