{"id":22300444,"url":"https://github.com/professormanhattan/template-docker-compose","last_synced_at":"2026-04-18T02:08:55.931Z","repository":{"id":44338152,"uuid":"484771756","full_name":"ProfessorManhattan/template-docker-compose","owner":"ProfessorManhattan","description":"👉 Starting point / instructions for creating a Docker Compose / Stack repository","archived":false,"fork":false,"pushed_at":"2023-03-23T13:05:41.000Z","size":2080,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T23:29:01.914Z","etag":null,"topics":["app","ci","codeclimate","compose","container","docker","docker-compose","docker-stack","dockerfile","gitlab","gitlab-ci","mblabs","megabytelabs","pipeline","professormanhattan","stack","virtualization","washingtondc"],"latest_commit_sha":null,"homepage":"https://megabyte.space","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProfessorManhattan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"docs/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ProfessorManhattan","open_collective":"megabytelabs","patreon":"ProfessorManhattan","custom":["donate.givedirectly.org"]}},"created_at":"2022-04-23T14:36:27.000Z","updated_at":"2023-08-18T18:13:41.000Z","dependencies_parsed_at":"2024-11-25T23:03:41.621Z","dependency_job_id":null,"html_url":"https://github.com/ProfessorManhattan/template-docker-compose","commit_stats":null,"previous_names":["professormanhattan/template-docker-compose","megabyte-labs/template-docker-compose"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ProfessorManhattan/template-docker-compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProfessorManhattan%2Ftemplate-docker-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProfessorManhattan%2Ftemplate-docker-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProfessorManhattan%2Ftemplate-docker-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProfessorManhattan%2Ftemplate-docker-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProfessorManhattan","download_url":"https://codeload.github.com/ProfessorManhattan/template-docker-compose/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProfessorManhattan%2Ftemplate-docker-compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31953517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":["app","ci","codeclimate","compose","container","docker","docker-compose","docker-stack","dockerfile","gitlab","gitlab-ci","mblabs","megabytelabs","pipeline","professormanhattan","stack","virtualization","washingtondc"],"created_at":"2024-12-03T18:10:58.719Z","updated_at":"2026-04-18T02:08:55.891Z","avatar_url":"https://github.com/ProfessorManhattan.png","language":"Shell","funding_links":["https://github.com/sponsors/ProfessorManhattan","https://opencollective.com/megabytelabs","https://patreon.com/ProfessorManhattan","donate.givedirectly.org","https://www.patreon.com/ProfessorManhattan"],"categories":[],"sub_categories":[],"readme":"\u003c!-- ⚠️ This README has been generated from the file(s) \".config/docs/blueprint-readme-docker-compose.md\" ⚠️--\u003e{{ load:.config/docs/readme/header.md }}\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://megabyte.space\" title=\"Megabyte Labs homepage\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Homepage\" src=\"https://img.shields.io/website?down_color=%23FF4136\u0026down_message=Down\u0026label=Homepage\u0026logo=home-assistant\u0026logoColor=white\u0026up_color=%232ECC40\u0026up_message=Up\u0026url=https%3A%2F%2Fmegabyte.space\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/megabyte-labs/template-docker-compose/blob/master/docs/CONTRIBUTING.md\" title=\"Learn about contributing\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Contributing\" src=\"https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors\u0026logoColor=white\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/\" title=\"Chat with us on Slack\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Slack\" src=\"https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack\u0026logoColor=white\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gitter.im/megabyte-labs/community\" title=\"Chat with the community on Gitter\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Gitter\" src=\"https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter\u0026logoColor=white\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/megabyte-labs/template-docker-compose\" title=\"GitHub mirror\" target=\"_blank\"\u003e\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/badge/Mirror-GitHub-333333?logo=github\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gitlab.com/megabyte-labs/templates/docker-compose\" title=\"GitLab repository\" target=\"_blank\"\u003e\n    \u003cimg alt=\"GitLab\" src=\"https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==\u0026style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003cbr/\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca title=\"Version: 8.11.0\" href=\"https://github.com/megabyte-labs/template-docker-compose\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Version: 8.11.0\" src=\"https://img.shields.io/badge/version-8.11.0-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACNJREFUCNdjIACY//+BEp9hhM3hAzYQwoBIAqEDYQrCZLwAAGlFKxU1nF9cAAAAAElFTkSuQmCC\u0026cacheSeconds=2592000\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"GitLab build status\" href=\"https://gitlab.com/megabyte-labs/templates/docker-compose/-/commits/master\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Build status\" src=\"https://img.shields.io/gitlab/pipeline-status/megabyte-labs/docker/docker-compose/template-docker-compose?branch=master\u0026label=build\u0026logo=gitlab\u0026logoColor=white\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"DockerHub image size\" href=\"https://hub.docker.com/repository/docker/megabytelabs/template-docker-compose\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Image size\" src=\"https://img.shields.io/docker/image-size/megabytelabs/template-docker-compose?logo=docker\u0026sort=date\u0026logoColor=white\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"DockerHub pulls\" href=\"https://hub.docker.com/repository/docker/megabytelabs/template-docker-compose\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Pulls\" src=\"https://img.shields.io/docker/pulls/megabytelabs/template-docker-compose?logo=docker\u0026logoColor=white\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"DockerHub stars\" href=\"https://hub.docker.com/repository/docker/megabytelabs/template-docker-compose\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Stars\" src=\"https://img.shields.io/docker/stars/megabytelabs/template-docker-compose?logo=docker\u0026logoColor=white\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"Documentation\" href=\"https://megabyte.space/docs/docker\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=readthedocs\u0026logoColor=white\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n  \u003ca title=\"License: MIT\" href=\"https://github.com/megabyte-labs/template-docker-compose/blob/master/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC\u0026style=flat-square\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003e \u003cbr/\u003e\u003ch4 align=\"center\"\u003e**Starting point / instructions for creating a Docker Compose / Stack repository**\u003c/h4\u003e\u003cbr/\u003e\n\n\u003ca href=\"#table-of-contents\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## Table of Contents\n\n- [Docker-Compose Project](#docker-compose-project)\n- [Requirements](#requirements)\n  - [Development Requirements](#development-requirements)\n- [Docker Compose / Stack Project](#docker-compose--stack-project)\n  - [Docker Containers](#docker-containers)\n  - [Configuration Management](#configuration-management)\n  - [Re-Building the Repository](#re-building-the-repository)\n- [Contributing](#contributing)\n  - [Affiliates](#affiliates)\n- [License](#license)\n\n\u003ca href=\"#docker-compose-project\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## Docker-Compose Project\n\nThis is a Docker Compose / Swarm project.\n\n\u003ca href=\"#requirements\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## Requirements\n\n- **[Docker](https://gitlab.com/megabyte-labs/ansible-roles/docker)**\n\n### Development Requirements\n\n- **[DockerSlim](repository.project.dockerslim)** - Used for generating compact, secure images\n- **[jq](repository.project.jq)** - Used for interacting with JSON\n- **[Node.js](repository.project.node)** (_\u003e=14.18_) - Utilized to add development features like a pre-commit hook and maintenance tasks\n- _Many more_ requirements that are _dynamically installed_ as they are needed by our `Taskfile.yml` via our custom [go-task/task](https://github.com/go-task/task) fork named **[Bodega](https://github.com/ProfessorManhattan/Bodega)**\n\nIf you choose to utilize the development tools provided by this project then at some point you will have to run `bash start.sh` (or `npm i` which calls `bash start.sh` after it is done). The `start.sh` script will attempt to automatically install any requirements (without sudo) that are not already present on your build system to the user's `~/.local/bin` folder. The `start.sh` script also takes care of other tasks such as generating the documentation by calling tasks defined in the `Taskfile.yml`. For more details on how the optional requirements are used and set up, check out the [CONTRIBUTING.md](https://gitlab.com/megabyte-labs/docker/docker-compose/template-docker-compose/-/blob/master/docs/CONTRIBUTING.md) guide.\n\nWhen you are ready to start development, run `task --menu` to open an interactive dialog that will help you understand what build commands we have already engineered for you.\n\n\u003ca href=\"#docker-compose--stack-project\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## Docker Compose / Stack Project\n\nWe house most of our Docker Compose / Stack configurations in our [Ansible Docker Swarm role](https://github.com/megabyte-labs/ansible-swarm). However, when a stack is more complicated and might need to include other files (i.e. Terraform files, or special configuration files) then we dedicate a repository to the project.\n\nUnlike our [Dockerfile](https://gitlab.com/megabyte-labs/templates/docker) repository projects, we do not have a strict repository style guide. There are, however, a few things to keep in mind.\n\nDocker Compose / Stack configurations are supposed to be easy to use, one-liner ways of launching otherwise somewhat complicated networks. So if the repository is not launchable by just running `docker up -d docker-compose.yml` then a file called `launch.sh` should be included in the repository. The `launch.sh` file should make setting up the stack a one-liner process.\n\n### Docker Containers\n\nIf the stack requires containers that are not from reputible sources or if the stack would benefit from having custom Dockerfile container builds then each Dockerfile should have its own repository in the appropriate sub-group in the [Docker group](https://gitlab.com/megabyte-labs/docker). Please also look over the [README of our Dockerfile boilerplate](https://gitlab.com/megabyte-labs/template/docker).\n\n### Configuration Management\n\nIn order to make the experience truly simple and adhere to the one-liner principle, it may be required to incorporate some sort of configuration management strategy. This should be done by either using Ansible or Terraform. In cases where performance is vital, Saltstack can be used as well.\n\nThe configuration choices should be thorough and automatically apply the settings that would satisfy the needs of most users. The configurations should make a best-effort at integrating with the other software we include in [Gas Station](https://github.com/megabyte-labs/Gas-Station), [JumpUSB](https://jumpusb.com), and any platform/service that a typical GitHub power-user would have in their stack.\n\nThat all said, the most important part of the project is to understand and have an intuitive feel for the stack's requirements.\n\n### Re-Building the Repository\n\nYou can begin the project using this repository as a boilerplate. It might also be helpful to check out some of the [other Docker Compose / Stack repositories](https://gitlab.com/megabyte-labs/docker/docker-compose). When you are done creating the stack, be sure to update the repository's metadata and documentation. You can do this by editting the fields in the `blueprint` section of the `package.json` file. After that, edit the documentation by adding your project-specific documentation written in markdown to the `docs/partials/guide.md` file. With the `blueprint` section and the documentation partial populated, you can re-compile the repository by running `bash start.sh \u0026\u0026 task update`. Be sure to add a custom transparent square `logo.png` to the root of this repository for good measure.\n\nAnd that is all, you are ready to polish this Docker stack and open a pull request.\n\n\u003ca href=\"#contributing\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## Contributing\n\nContributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/megabyte-labs/template-docker-compose/issues). If you would like to contribute, please take a look at the [contributing guide](https://github.com/megabyte-labs/template-docker-compose/blob/master/docs/CONTRIBUTING.md).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSponsorship\u003c/b\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\u003cblockquote\u003e\n\u003cbr/\u003e\nDear Awesome Person,\u003cbr/\u003e\u003cbr/\u003e\nI create open source projects out of love. Although I have a job, shelter, and as much fast food as I can handle, it would still be pretty cool to be appreciated by the community for something I have spent a lot of time and money on. Please consider sponsoring me! Who knows? Maybe I will be able to quit my job and publish open source full time.\n\u003cbr/\u003e\u003cbr/\u003eSincerely,\u003cbr/\u003e\u003cbr/\u003e\n\n**_Brian Zalewski_**\u003cbr/\u003e\u003cbr/\u003e\n\n\u003c/blockquote\u003e\n\n\u003ca title=\"Support us on Open Collective\" href=\"https://opencollective.com/megabytelabs\" target=\"_blank\"\u003e\n  \u003cimg alt=\"Open Collective sponsors\" src=\"https://img.shields.io/opencollective/sponsors/megabytelabs?logo=opencollective\u0026label=OpenCollective\u0026logoColor=white\u0026style=for-the-badge\" /\u003e\n\u003c/a\u003e\n\u003ca title=\"Support us on GitHub\" href=\"https://github.com/ProfessorManhattan\" target=\"_blank\"\u003e\n  \u003cimg alt=\"GitHub sponsors\" src=\"https://img.shields.io/github/sponsors/ProfessorManhattan?label=GitHub%20sponsors\u0026logo=github\u0026style=for-the-badge\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.patreon.com/ProfessorManhattan\" title=\"Support us on Patreon\" target=\"_blank\"\u003e\n  \u003cimg alt=\"Patreon\" src=\"https://img.shields.io/badge/Patreon-Support-052d49?logo=patreon\u0026logoColor=white\u0026style=for-the-badge\" /\u003e\n\u003c/a\u003e\n\n### Affiliates\n\nBelow you will find a list of services we leverage that offer special incentives for signing up for their services through our special links:\n\n\u003ca href=\"http://eepurl.com/h3aEdX\" title=\"Sign up for $30 in MailChimp credits\" target=\"_blank\"\u003e\n  \u003cimg alt=\"MailChimp\" src=\"https://cdn-images.mailchimp.com/monkey_rewards/grow-business-banner-2.png\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.digitalocean.com/?refcode=751743d45e36\u0026utm_campaign=Referral_Invite\u0026utm_medium=Referral_Program\u0026utm_source=badge\"\u003e\n  \u003cimg src=\"https://web-platforms.sfo2.digitaloceanspaces.com/WWW/Badge%203.svg\" alt=\"DigitalOcean Referral Badge\" /\u003e\n\u003c/a\u003e\n\n\u003c/details\u003e\n\n\u003ca href=\"#license\" style=\"width:100%\"\u003e\u003cimg style=\"width:100%\" src=\"https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png\" /\u003e\u003c/a\u003e\n\n## License\n\nCopyright © 2020-2021 [Megabyte LLC](https://megabyte.space). This project is [MIT](https://gitlab.com/megabyte-labs/templates/docker-compose/-/blob/master/LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofessormanhattan%2Ftemplate-docker-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprofessormanhattan%2Ftemplate-docker-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofessormanhattan%2Ftemplate-docker-compose/lists"}