├── .gitattributes ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md ├── config.yml ├── dependabot.yml ├── weekly-digest.yml └── workflows │ └── pull_request.yml ├── .gitignore ├── .nvmrc ├── LICENSE ├── README.md ├── badge.svg ├── build.js ├── index.html ├── package-lock.json ├── package.json ├── tests ├── common.mjs ├── exclude_in_test.json ├── pull_request.mjs └── test_all.mjs └── website ├── favicon.png └── index.tmpl.html /.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-vendored 2 | *.* linguist-language=Markdown 3 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | *.md @veggiemonk @agebhar1 @dmitrytokarev @gesellix @mashb1t @moshloop @vegasbrianc @noteed 2 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at julien.bisconti (at) hotmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to awesome-docker 2 | 3 | First: if you're unsure or afraid of anything, just ask or submit the issue or pull request anyways. You won't be yelled at for giving your best effort. The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contributions, and don't want a wall of rules to get in the way of that. 4 | 5 | However, for those individuals who want a bit more guidance on the best way to contribute to the project, read on. This document will cover what we're looking for. By addressing all the points we're looking for, it raises the chances we can quickly merge or address your contributions. 6 | 7 | We appreciate and recognize [all contributors](https://github.com/veggiemonk/awesome-docker/graphs/contributors). 8 | 9 | Please note that this project is released with a [Contributor Code of Conduct](https://github.com/veggiemonk/awesome-docker/blob/master/.github/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. 10 | 11 | # Table of Contents 12 | 13 | - [Mission Statement](#mission-statement) 14 | - [Quality Standards](#quality-standards) 15 | - [Contribution Guidelines](#contribution-guidelines) 16 | - [New Collaborators](#new-collaborators) 17 | 18 | # Mission Statement 19 | 20 | `awesome-docker` is a hand-crafted list for high-quality information about Docker and its resources. It should be related or compatible with Docker or containers. If it's just an image built on top of Docker, the project possibly belongs to other [awesome lists](https://github.com/sindresorhus/awesome). You can check the [awesome-selfhosted list](https://github.com/Kickball/awesome-selfhosted) or the [awesome-sysadmin list](https://github.com/n1trux/awesome-sysadmin) as well. 21 | If it's a **tutorial or a blog post**, they get outdated really quickly so we don't really put them on the list but if it is on a very advanced and/or specific topic, we will consider it! 22 | If something is awesome, share it (pull request or [issue](https://github.com/veggiemonk/awesome-docker/issues/new) or [chat](https://gitter.im/veggiemonk/awesome-docker)), let us know why and we will help you! 23 | 24 | # Quality Standards 25 | 26 | Note that we can help you achieve those standards, just try your best and be brave. 27 | We'll guide you to the best of our abilities. 28 | 29 | To be on the list, it would be **nice** if entries adhere to these quality standards: 30 | 31 | - It should take less than 20 sec to find what is the project, how to install it and how to use it. 32 | - Generally useful to the community. 33 | - A project on GitHub with a well documented `README.md` file and plenty of examples is considered high quality. 34 | - Clearly stating if an entry is related to (Linux) containers and not to Docker. There is an [awesome list](https://github.com/Friz-zy/awesome-linux-containers) for that. 35 | - Clearly stating "what is it" i.e. which category it belongs to. 36 | - Clearly stating "what is it for" i.e. mention a real problem it solves (even a small one). Make it clear for the next person. 37 | - If it is a **WIP** (work in progress, not safe for production), please mention it. (Remember the time before Docker 1.0 ? ;-) ) 38 | - Always put the link to the GitHub project instead of the website! 39 | 40 | To be on the list, the project **must** have: 41 | 42 | - How to setup/install the project 43 | - How to use the project (examples) 44 | 45 | If your PR is not merged, we will tell you why so that you may be able to improve it. 46 | But usually, we are pretty relaxed people, so just come and say hi, we'll figure something out together. 47 | 48 | # Contribution Guidelines 49 | 50 | ## I want to share a project, what should I do? 51 | 52 | - **Adding to the list:** Submit a pull request or open an [issue](https://github.com/veggiemonk/awesome-docker/issues/new) 53 | - **Removing from the list:** Submit a pull request or open an [issue](https://github.com/veggiemonk/awesome-docker/issues/new) 54 | - Changing something else: Submit a pull request or open an [issue](https://github.com/veggiemonk/awesome-docker/issues/new) 55 | - Don't know what to do: Open an [issue](https://github.com/veggiemonk/awesome-docker/issues/new) or join our [chat](https://gitter.im/veggiemonk/awesome-docker), let us know what's going on. 56 | 57 | **join the chat:** 58 | 59 | [](https://gitter.im/veggiemonk/awesome-docker) 60 | 61 | or you can 62 | 63 | **ping us on Twitter:** 64 | 65 | * [veggiemonk](https://twitter.com/veggiemonk) 66 | * [idomyowntricks](https://twitter.com/idomyowntricks) 67 | * [gesellix](https://twitter.com/gesellix) 68 | * [dmitrytokarev](https://twitter.com/dmitrytok) 69 | 70 | ### Rules for Pull Request 71 | 72 | - Each item should be limited to one link, no duplicates, no redirection (careful with `http` vs `https`!) 73 | - The link should be the name of the package or project or website 74 | - Description should be clear and concise (read it out loud to be sure) 75 | - Description should follow the link, on the same line 76 | - Entries are listed alphabetically, please respect the order 77 | - If you want to add more than one link, please don't do all PR on the exact same line, it usually results in conflicts and your PR cannot be automatically merged... 78 | 79 | Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries. 80 | 81 | #### Your commit message will be a [tweet](https://twitter.com/awesome_docker) so write a [good commit message](https://chris.beams.io/posts/git-commit/), keep that in mind :) 82 | 83 | # New Collaborators 84 | 85 | If you just joined the team of maintainers for this repo, first of all: WELCOME! 86 | 87 | If it is your first time maintaining an open source project, read the [best practice guides for maintainers](https://opensource.guide/best-practices/). 88 | 89 | Here are the few things you need to know: 90 | * We don't push directly to the master branch. Every entry **MUST** be reviewed! 91 | * Each entry should be in accordance to this quality standards and contribution guidelines. 92 | * To ask a contributor to make a change, just copy paste this message [here](https://github.com/veggiemonk/awesome-docker/pull/289#issuecomment-285608004) and change few things like names and stuff. **The main idea is to help people making great projects.** 93 | * If something seems weird, i.e. if you don't understand what a project does or the documentation is poor, don't hesitate to (nicely) ask for more explanation (see previous point). 94 | * Say thank you to people who contribute to this project! It may not seems like much but respect and gratitude are important :D 95 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Hi, 2 | 3 | I would like to add a link. 4 | 5 | **REPO**: 6 | 7 | **DESCRIPTION**: 8 | 9 | **AUTHOR**: 10 | 11 | Or directly write it: 12 | ```markdown 13 | [REPO](https://github.com/AUTHOR/REPO) - DESCRIPTION. By [@AUTHOR](https://github.com/AUTHOR) 14 | ``` 15 | 16 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | # Quality Standards 17 | 18 | Note that we can help you achieve those standards, just try your best and be brave. 19 | We'll guide you to the best of our abilities. 20 | 21 | To be on the list, it would be **nice** if entries adhere to these quality standards: 22 | 23 | - It should take less than 20 sec to find what is the project, how to install it and how to use it. 24 | - Generally useful to the community. 25 | - A project on GitHub with a well documented `README.md` file and plenty of examples is considered high quality. 26 | - Clearly stating if an entry is related to (Linux) containers and not to Docker. There is an [awesome list](https://github.com/Friz-zy/awesome-linux-containers) for that. 27 | - Clearly stating "what is it" i.e. which category it belongs to. 28 | - Clearly stating "what is it for" i.e. mention a real problem it solves (even a small one). Make it clear for the next person. 29 | - If it is a **WIP** (work in progress, not safe for production), please mention it. (Remember the time before Docker 1.0 ? ;-) ) 30 | - Always put the link to the GitHub project instead of the website! 31 | 32 | To be on the list, the project **must** have: 33 | 34 | - How to setup/install the project 35 | - How to use the project (examples) 36 | 37 | If your PR is not merged, we will tell you why so that you may be able to improve it. 38 | But usually, we are pretty relaxed people, so just come and say hi, we'll figure something out together. 39 | 40 | # Rules for Pull Request 41 | 42 | - Each item should be limited to one link, no duplicates, no redirection (careful with `http` vs `https`!) 43 | - The link should be the name of the package or project or website 44 | - Description should be clear and concise (read it out loud to be sure) 45 | - Description should follow the link, on the same line 46 | - Entries are listed alphabetically, please respect the order 47 | - If you want to add more than one link, please don't do all PR on the exact same line, it usually results in conflicts and your PR cannot be automatically merged... 48 | 49 | Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries. 50 | 51 | #### Your commit message will be a [tweet](https://twitter.com/awesome_docker) so write a [good commit message](https://chris.beams.io/posts/git-commit/), keep that in mind :) 52 | -------------------------------------------------------------------------------- /.github/config.yml: -------------------------------------------------------------------------------- 1 | # Configuration for welcome - https://github.com/behaviorbot/welcome 2 | 3 | # Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome 4 | 5 | # Comment to be posted to on first time issues 6 | newIssueWelcomeComment: > 7 | Thanks for opening your first issue here! 8 | 9 | # Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome 10 | 11 | # Comment to be posted to on PRs from first time contributors in your repository 12 | newPRWelcomeComment: > 13 | Thank you for contributing. Please check out our contributing guidelines and welcome! 14 | 15 | # Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge 16 | 17 | # Comment to be posted to on pull requests merged by a first time user 18 | firstPRMergeComment: > 19 | Congrats on merging your first pull request! 20 | 21 | # It is recommend to include as many gifs and emojis as possible 22 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "npm" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "daily" 12 | -------------------------------------------------------------------------------- /.github/weekly-digest.yml: -------------------------------------------------------------------------------- 1 | # Configuration for weekly-digest - https://github.com/apps/weekly-digest 2 | publishDay: sun 3 | canPublishIssues: true 4 | canPublishPullRequests: true 5 | canPublishContributors: true 6 | canPublishStargazers: true 7 | canPublishCommits: true -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: Pull Requests / Weekly QA 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | schedule: 8 | - cron: '0 0 * * 6' 9 | 10 | jobs: 11 | test: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4.2.2 15 | - uses: actions/setup-node@v4.3.0 16 | with: 17 | node-version: lts/* 18 | 19 | - uses: actions/cache@v4.2.3 20 | id: cache 21 | with: 22 | path: ~/.npm 23 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 24 | restore-keys: | 25 | ${{ runner.os }}-node- 26 | 27 | - name: Install Dependencies 28 | # if: steps.cache.outputs.cache-hit != 'true' 29 | run: npm ci --ignore-scripts --no-audit --no-progress --prefer-offline 30 | - run: npm run test-pr 31 | env: 32 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | npm-debug.log* 4 | build 5 | node_modules 6 | .cache 7 | dist 8 | website/index.html 9 | website/table.html 10 | 11 | .idea 12 | **/.DS_Store 13 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | lts/* 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Docker [][sindresorhus] [](https://app.netlify.com/sites/awesome-docker/deploys) 2 | 3 | > A curated list of Docker resources and projects 4 | 5 | If you would like to contribute, please read [CONTRIBUTING.md][contributing] first. 6 | It contains a lot of tips and guidelines to help keep things organized. 7 | Just click [README.md][editreadme] to submit a [pull request][editreadme]. 8 | If this list is not complete, you can [contribute][editreadme] to make it so. Here is a great video tutorial to learn how to [contribute on Github](https://egghead.io/lessons/javascript-identifying-how-to-contribute-to-an-open-source-project-on-github). 9 | 10 | > **Please**, help organize these resources so that they are _easy to find_ and _understand_ for newcomers. See how to **[Contribute][contributing]** for tips! 11 | 12 | **_If you see a link here that is not (any longer) a good fit, you can fix it by submitting a [pull request][editreadme] to improve this file. Thank you!_** 13 | 14 | The creators and maintainers of this list do not receive any form of payment to accept a change made by any contributor. This page is not an official Docker product in any way. It is a list of links to projects and is maintained by volunteers. Everybody is welcome to contribute. The goal of this repo is to index open-source projects, not to advertise for profit. 15 | 16 | All the links are monitored and tested with a home baked [Node.js script](https://github.com/veggiemonk/awesome-docker/blob/master/.github/workflows/pull_request.yml) 17 | 18 | # Contents 19 | 20 | 21 | 22 | - [Legend](#legend) 23 | - [What is Docker](#what-is-docker) 24 | - [Where to start](#where-to-start) 25 | - [Where to start (Windows)](#where-to-start-windows) 26 | - [Projects](#projects) 27 | - [Container Operations](#container-operations) 28 | - [Container Composition](#container-composition) 29 | - [Deployment and Infrastructure](#deployment-and-infrastructure) 30 | - [Monitoring](#monitoring) 31 | - [Networking](#networking) 32 | - [Orchestration](#orchestration) 33 | - [PaaS](#paas) 34 | - [Reverse Proxy](#reverse-proxy) 35 | - [Runtime](#runtime) 36 | - [Security](#security) 37 | - [Service Discovery](#service-discovery) 38 | - [Volume Management / Data](#volume-management--data) 39 | - [User Interface](#user-interface) 40 | - [IDE integrations](#ide-integrations) 41 | - [Desktop](#desktop) 42 | - [Terminal](#terminal) 43 | - [Terminal UI](#terminal-ui) 44 | - [CLI tools](#cli-tools) 45 | - [Other](#other) 46 | - [Web](#web) 47 | - [Docker Images](#docker-images) 48 | - [Base Tools](#base-tools) 49 | - [Builder](#builder) 50 | - [Dockerfile](#dockerfile) 51 | - [Linter](#linter) 52 | - [Metadata](#metadata) 53 | - [Registry](#registry) 54 | - [Development with Docker](#development-with-docker) 55 | - [API Client](#api-client) 56 | - [CI/CD](#cicd) 57 | - [Development Environment](#development-environment) 58 | - [Garbage Collection](#garbage-collection) 59 | - [Serverless](#serverless) 60 | - [Testing](#testing) 61 | - [Wrappers](#wrappers) 62 | - [Services based on Docker (mostly :heavy\_dollar\_sign:)](#services-based-on-docker-mostly-heavy_dollar_sign) 63 | - [CI Services](#ci-services) 64 | - [CaaS](#caas) 65 | - [Monitoring Services](#monitoring-services) 66 | - [Useful Resources](#useful-resources) 67 | - [Awesome Lists](#awesome-lists) 68 | - [Demos and Examples](#demos-and-examples) 69 | - [Good Tips](#good-tips) 70 | - [Raspberry Pi \& ARM](#raspberry-pi--arm) 71 | - [Security](#security-1) 72 | - [Videos](#videos) 73 | - [Communities and Meetups](#communities-and-meetups) 74 | - [Brazilian](#brazilian) 75 | - [Chinese](#chinese) 76 | - [English](#english) 77 | - [Russian](#russian) 78 | - [Spanish](#spanish) 79 | - [Stargazers over time](#stargazers-over-time) 80 | 81 | 82 | 83 | # Legend 84 | 85 | - Abandoned :skull: 86 | - Beta :construction: 87 | - Monetized :heavy_dollar_sign: 88 | 89 | # What is Docker 90 | 91 | > Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud. 92 | 93 | _Source:_ [What is Docker](https://www.docker.com/why-docker/) 94 | 95 | # Where to start 96 | 97 | - [Benefits of using Docker](https://semaphoreci.com/blog/docker-benefits) for development and delivery, with a practical roadmap for adoption. 98 | - [Bootstrapping Microservices](https://www.manning.com/books/bootstrapping-microservices-with-docker-kubernetes-and-terraform) by [Ashley Davis](https://twitter.com/ashleydavis75) - A practical and project-based guide to building applications with microservices, starts by building a Docker image for a single microservice and publishing it to a private container registry, finishes by deploying a complete microservices application to a production Kubernetes cluster. 99 | - [Docker Curriculum](https://github.com/prakhar1989/docker-curriculum): A comprehensive tutorial for getting started with Docker. Teaches how to use Docker and deploy dockerized apps on AWS with Elastic Beanstalk and Elastic Container Service. 100 | - [Docker Documentation](https://docs.docker.com/): the official documentation. 101 | - [Docker for beginners](https://github.com/groda/big_data/blob/master/docker_for_beginners.md): A tutorial for beginners who need to learn the basics of Docker—from "Hello world!" to basic interactions with containers, with simple explanations of the underlying concepts. 102 | - [Docker for novices](https://www.youtube.com/watch?v=xsjSadjKXns) An introduction to Docker for developers and testers who have never used it. (Video 1h40, recorded linux.conf.au 2019 — Christchurch, New Zealand) by Alex Clews. 103 | - [Docker Hands-on Labs](https://labex.io/skilltrees/docker) A structured Docker skill tree with 100 beginner-friendly hands-on labs by LabEx. 104 | - [Docker katas](https://github.com/eficode-academy/docker-katas) A series of labs that will take you from "Hello Docker" to deploying a containerized web application to a server. 105 | - [Docker Latest Tutorial](https://www.techgeekbuzz.com/tutorial/docker/what-is-docker/) — This is a series of latest docker tutorial, where you can learn what is docker, docker lifecycle, how to run Nginx Web Server in Docker?, how to run mysql on docker container, how to use Python on docker and many other important topics. 106 | - [Docker simplified in 55 seconds](https://www.youtube.com/watch?v=vP_4DlOH1G4): An animated high-level introduction to Docker. Think of it as a visual tl;dr that makes it easier to dive into more complex learning materials. 107 | - [Docker Training](https://training.mirantis.com) :heavy_dollar_sign: 108 | - [Docker Tutorial for Beginners (Updated 2019 version)](https://hashnode.com/post/docker-tutorial-for-beginners-cjrj2hg5001s2ufs1nker9he2) — In this Docker tutorial, you'll learn all the basics and learn how you can containerize Node.js and Go applications. Even if you aren't familiar with these languages it should be easy for you to follow this tutorial and use any other language. 109 | - [Introduction à Docker](https://blog.stephane-robert.info/docs/conteneurs/moteurs-conteneurs/docker/) A dedicated section to master Docker on a French site about DevSecOps: From the basics to best practices, including optimizing, securing your containers... 110 | - [Learn Docker](https://github.com/dwyl/learn-docker): step-by-step tutorial and more resources (video, articles, cheat sheets) by [@dwyl](https://github.com/dwyl) 111 | - [Learn Docker (Visually)](https://pagertree.com/learn/docker) - A beginner-focused high-level overview of all the major components of Docker and how they fit together. Lots of high-quality images, examples, and resources. 112 | - [Play With Docker](https://training.play-with-docker.com/): PWD is a great way to get started with Docker from beginner to advanced users. Docker runs directly in your browser. 113 | - [Practical Guide about Docker Commands in Spanish](https://github.com/brunocascio/docker-espanol) This Spanish guide contains the use of basic docker commands with real life examples. 114 | - [Practical Introduction to Container Terminology](https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction) The landscape for container technologies is larger than just docker. Without a good handle on the terminology, It can be difficult to grasp the key differences between docker and (pick your favorites, CRI-O, rkt, lxc/lxd) or understand what the Open Container Initiative is doing to standardize container technology. 115 | - [Setting Python Development Environment with VScode and Docker](https://github.com/RamiKrispin/vscode-python): A step-by-step tutorial for setting up a dockerized Python development environment with VScode, Docker, and the Dev Container extension. 116 | - [The Docker Handbook](https://docker-handbook.farhan.dev/) An open-source book that teaches you the fundamentals, best practices and some intermediate Docker functionalities. The book is hosted on [fhsinchy/the-docker-handbook](https://github.com/fhsinchy/the-docker-handbook) and the projects are hosted on [fhsinchy/docker-handbook-projects](https://github.com/fhsinchy/docker-handbook-projects) repository. 117 | 118 | 119 | **Cheatsheets** by 120 | 121 | - [@eon01](https://github.com/eon01/DockerCheatSheet) 122 | - [@dimonomid](https://github.com/dimonomid/docker-quick-ref) (PDF) 123 | - [@JensPiegsa](https://github.com/JensPiegsa/docker-cheat-sheet) 124 | - [@wsargent](https://github.com/wsargent/docker-cheat-sheet) (Most popular) 125 | 126 | # Where to start (Windows) 127 | 128 | - [A Comparative Study of Docker Engine on Windows Server vs Linux Platform](https://collabnix.com/a-comparative-study-of-docker-engine-on-windows-server-vs-linux-platform/) Comparing the feature sets and implementations of Docker on Windows and Linux 129 | - [Docker on Windows behind a firewall](https://toedter.com/2015/05/11/docker-on-windows-behind-a-firewall/) by [@kaitoedter](https://twitter.com/kaitoedter) 130 | - [Docker Reference Architecture: Modernizing Traditional .NET Framework Applications](https://docs.mirantis.com/containers/v3.0/dockeree-ref-arch/app-dev/modernize-dotnet-apps.html) - You will learn to identify the types of .NET Framework applications that are good candidates for containerization, the "lift-and-shift" approach to containerization. 131 | - [Docker with Microsoft SQL 2016 + ASP.NET](https://blog.alexellis.io/docker-does-sql2016-aspnet/) Demonstration running ASP.NET and SQL Server workloads in Docker 132 | - [Exploring ASP.NET Core with Docker in both Linux and Windows Containers](https://www.hanselman.com/blog/exploring-aspnet-core-with-docker-in-both-linux-and-windows-containers) Running ASP.NET Core apps in Linux and Windows containers, using [Docker for Windows][docker-for-windows] 133 | - [Running a Legacy ASP.NET App in a Windows Container](https://blog.sixeyed.com/dockerizing-nerd-dinner-part-1-running-a-legacy-asp-net-app-in-a-windows-container/) Steps for Dockerizing a legacy ASP.NET app and running as a Windows container 134 | - [Windows Containers and Docker: The 101](https://www.youtube.com/watch?v=N7SG2wEyQtM) :movie_camera: - A 20-minute overview, using Docker to run PowerShell, ASP.NET Core and ASP.NET apps 135 | - [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/about/) Overview of Windows containers, drilling down to Quick Starts for Windows 10 and Windows Server 2016 136 | 137 | --- 138 | 139 | # Projects 140 | 141 | - Moby = open source development 142 | - Docker CE = free product release based on Moby 143 | - Docker EE = commercial product release based on Docker CE. 144 | 145 | > Docker EE is on the same code base as Docker CE, so also built from Moby, with commercial components added, such as "docker data center / universal control plane" 146 | 147 | - [Moby](https://github.com/moby/moby) 148 | - [Docker Images](https://hub.docker.com) 149 | - [Docker Compose](https://github.com/docker/compose/) (Define and run multi-container applications with Docker) 150 | - [Docker Machine](https://github.com/docker/machine) :skull: (Machine management for a container-centric world) 151 | - [Docker Registry][distribution] (The Docker toolset to pack, ship, store, and deliver content) 152 | - [Docker Swarm](https://github.com/docker/swarm) :skull: (Swarm: a Docker-native clustering system) 153 | 154 | ## Container Operations 155 | 156 | ### Container Composition 157 | 158 | - [bocker](https://github.com/icy/bocker) (2) :skull: - Write Dockerfile completely in Bash. Extensible and simple. --> Reusable by [@icy](https://github.com/icy) 159 | - [bocker](https://github.com/p8952/bocker) (1) :skull: - Docker implemented in 100 lines of bash by [p8952](https://github.com/p8952) 160 | - [box](https://github.com/box-builder/box) :skull: - Build Dockerfile images with a mruby DSL, includes flattening and layer manipulation 161 | - [Capitan](https://github.com/byrnedo/capitan) - Composable docker orchestration with added scripting support by [@byrnedo]. 162 | - [compose_plantuml](https://github.com/funkwerk/compose_plantuml) :skull: - Generate Plantuml graphs from docker-compose files by [@funkwerk](https://github.com/funkwerk) 163 | - [Composerize](https://github.com/magicmark/composerize) - Convert docker run commands into docker-compose files 164 | - [crowdr](https://github.com/polonskiy/crowdr) - Tool for managing multiple Docker containers (`docker-compose` alternative) by [@polonskiy](https://github.com/polonskiy/) 165 | - [ctk](https://github.com/ctk-hq/ctk) :construction: - Visual composer for container based workloads. By [@corpulent](https://github.com/corpulent) 166 | - [docker-compose-graphviz](https://github.com/abesto/docker-compose-graphviz) :skull: - Turn a docker-compose.yml files into Graphviz .dot files by [@abesto](https://github.com/abesto) 167 | - [docker-config-update](https://github.com/sudo-bmitch/docker-config-update) - Utility to update docker configs and secrets for deploying in a compose file by [@sudo-bmitch](https://github.com/sudo-bmitch) 168 | - [draw-compose](https://github.com/Alexis-benoist/draw-compose) :skull: - Utility to draw a schema of a docker compose by [@Alexis-benoist](https://github.com/Alexis-benoist) 169 | - [elsy](https://github.com/cisco/elsy) - An opinionated, multi-language, build tool based on Docker and Docker Compose 170 | - [habitus](https://github.com/cloud66-oss/habitus) - A Build Flow Tool for Docker by [@cloud66](https://github.com/cloud66) 171 | - [kompose](https://github.com/kubernetes/kompose) - Go from Docker Compose to Kubernetes 172 | - [Maestro](https://github.com/toscanini/maestro) :skull: - Maestro provides the ability to easily launch, orchestrate and manage multiple Docker containers as single unit by [@tascanini](https://github.com/toscanini) 173 | - [percheron](https://github.com/ashmckenzie/percheron) :skull: - Organise your Docker containers with muscle and intelligence by [@ashmckenzie](https://github.com/ashmckenzie) 174 | - [plash](https://github.com/ihucos/plash) - A container run and build engine - runs inside docker. 175 | - [podman-compose](https://github.com/containers/podman-compose) - a script to run docker-compose.yml using podman by [@containers][containers] 176 | - [rocker-compose](https://github.com/grammarly/rocker-compose) :skull: - Docker composition tool with idempotency features for deploying apps composed of multiple containers. By[@grammarly]. 177 | - [rocker](https://github.com/grammarly/rocker) :skull: - Extended Dockerfile builder. Supports multiple FROMs, MOUNTS, templates, etc. by [@grammarly]. 178 | - [Smalte](https://github.com/roquie/smalte) – Dynamically configure applications that require static configuration in docker container. By [@roquie](https://github.com/roquie) 179 | - [Stacker](https://github.com/stacker/stacker-cli) :skull: - Docker Compose Templates. Stacker provides an abstraction layer over Docker Compose and a better DX (developer experience). 180 | - [Stitchocker](https://github.com/alexaandrov/stitchocker) - A lightweight and fast command line utility for conveniently grouping your docker-compose multiple container services. By [@alexaandrov](https://github.com/alexaandrov) 181 | - [Zodiac](https://github.com/CenturyLinkLabs/zodiac) :skull: - A lightweight tool for easy deployment and rollback of dockerized applications. By [@CenturyLinkLabs][centurylinklabs] 182 | 183 | ### Deployment and Infrastructure 184 | 185 | - [awesome-stacks](https://github.com/ethibox/awesome-stacks) - Deploy 150+ open-source web apps with one Docker command 186 | - [blackfish](https://gitlab.com/blackfish/blackfish) - a CoreOS VM to build swarm clusters for Dev & Production by [@blackfish](https://gitlab.com/blackfish/) 187 | - [BosnD](https://gitlab.com/n0r1sk/bosnd) - BosnD, the boatswain daemon - A dynamic configuration file writer & service reloader for dynamically changing container environments. 188 | - [Centurion](https://github.com/newrelic/centurion) - Centurion is a mass deployment tool for Docker fleets. It takes containers from a Docker registry and runs them on a fleet of hosts with the correct environment variables, host volume mappings, and port mappings. By [@newrelic](https://github.com/newrelic) 189 | - [Clocker](https://github.com/brooklyncentral/clocker) - Clocker creates and manages a Docker cloud infrastructure. Clocker supports single-click deployments and runtime management of multi-node applications that run as containers distributed across multiple hosts, on both Docker and Marathon. It leverages [Calico][calico] and [Weave][weave] for networking and [Brooklyn](https://brooklyn.apache.org/) for application blueprints. By [@brooklyncentral](https://github.com/brooklyncentral) 190 | - [Conduit](https://github.com/ehazlett/conduit) - Experimental deployment system for Docker by [@ehazlett](https://github.com/ehazlett) 191 | - [depcon](https://github.com/ContainX/depcon) - Depcon is written in Go and allows you to easily deploy Docker containers to Apache Mesos/Marathon, Amazon ECS and Kubernetes. By [@ContainX][containx] 192 | - [deploy](https://github.com/ttiny/deploy) :skull: - Git and Docker deployment tool. A middle ground between simple Docker composition tools and full blown cluster orchestration by [@ttiny](https://github.com/ttiny) 193 | - [docker-to-iac](https://github.com/deploystackio/docker-to-iac) - Translate docker run and commit into Infrastructure as Code templates for AWS, Render.com and DigitalOcean by [@DeployStack](https://github.com/deploystackio) 194 | - [dockit](https://github.com/humblec/dockit) :skull: - Do docker actions and Deploy gluster containers! By [@humblec](https://github.com/humblec) 195 | - [gitkube](https://github.com/hasura/gitkube) - Gitkube is a tool for building and deploying docker images on Kubernetes using `git push`. By [@Hasura](https://github.com/hasura/). 196 | - [Grafeas](https://github.com/grafeas/grafeas) - A common API for metadata about containers, from image and build details to security vulnerabilities. By [grafeas](https://github.com/grafeas) 197 | - [Longshoreman](https://github.com/longshoreman/longshoreman) :skull: - Longshoreman automates application deployment using Docker. Just create a Docker repository (or use a service), configure the cluster using AWS or Digital Ocean (or whatever you like) and deploy applications using a Heroku-like CLI tool. By [longshoreman](https://github.com/longshoreman) 198 | - [swarm-ansible](https://github.com/LombardiDaniel/swarm-ansible?tab=readme-ov-file) - Swarm-Ansible bootstraps a production-ready swarm cluster using ansible. Comes with tools to automate CI, help monitoring and traefik pre-configured for SSL certificates and simple-auth. Comes with a private registry and more! 199 | - [SwarmManagement](https://github.com/hansehe/SwarmManagement) - Swarm Management is a python application, installed with pip. The application makes it easy to manage a Docker Swarm by configuring a single yaml file describing which stacks to deploy, and which networks, configs or secrets to create. 200 | - [werf](https://github.com/werf/werf) - werf is a CI/CD tool for building Docker images efficiently and deploying them to Kubernetes using GitOps by [@flant](https://github.com/flant) 201 | 202 | ### Monitoring 203 | 204 | - [Autoheal](https://github.com/willfarrell/docker-autoheal) - Monitor and restart unhealthy docker containers automatically. 205 | - [Axibase Collector](https://axibase.com/docs/axibase-collector/) - Axibase Collector streams performance counters, configuration changes and lifecycle events from the Docker engine(s) into Axibase Time Series Database for roll-up dashboards and integration with upstream monitoring systems. 206 | - [cAdvisor](https://github.com/google/cadvisor) - Analyzes resource usage and performance characteristics of running containers. Created by [@Google][google] 207 | - [Checkmate](https://github.com/bluewave-labs/checkmate) - Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. 208 | - [Docker-Alertd](https://github.com/deltaskelta/docker-alertd) - Monitor and send alerts based on docker container resource usage/statistics 209 | - [Docker-Flow-Monitor](https://github.com/docker-flow/docker-flow-monitor) - Reconfigures Prometheus when a new service is updated or deployed automatically by [@docker-flow][docker-flow] 210 | - [Dockerana](https://github.com/dockerana/dockerana) :skull: - packaged version of Graphite and Grafana, specifically targeted at metrics from Docker. 211 | - [DockProc](https://gitlab.com/n0r1sk/dockproc) - I/O monitoring for containers on processlevel. 212 | - [dockprom](https://github.com/stefanprodan/dockprom) - Docker hosts and containers monitoring with Prometheus, Grafana, cAdvisor, NodeExporter and AlertManager by [@stefanprodan](https://github.com/stefanprodan) 213 | - [Doku](https://github.com/amerkurev/doku) - Doku is a simple web-based application that allows you to monitor Docker disk usage. [@amerkurev](https://github.com/amerkurev) 214 | - [Dozzle](https://github.com/amir20/dozzle) - Monitor container logs in real-time with a browser or mobile device. [@amir20](https://github.com/amir20) 215 | - [Dynatrace](https://www.dynatrace.com/solutions/container-monitoring/) :heavy_dollar_sign: - Monitor containerized applications without installing agents or modifying your Run commands 216 | - [Glances](https://github.com/nicolargo/glances) - A cross-platform curses-based system monitoring tool written in Python by [@nicolargo](https://github.com/nicolargo) 217 | - [Grafana Docker Dashboard Template](https://grafana.com/grafana/dashboards/179-docker-prometheus-monitoring/) - A template for your Docker, Grafana and Prometheus stack [@vegasbrianc][vegasbrianc] 218 | - [HertzBeat](https://github.com/dromara/hertzbeat) - An open-source real-time monitoring system with custom-monitor and agentless. 219 | - [InfluxDB, cAdvisor, Grafana](https://github.com/vegasbrianc/docker-monitoring) - InfluxDB Time series DB in combination with Grafana and cAdvisor by [@vegasbrianc][vegasbrianc] 220 | - [LogJam](https://github.com/gocardless/logjam) - :skull: Logjam is a log forwarder designed to listen on a local port, receive log entries over UDP, and forward these messages on to a log collection server (such as logstash) by [@gocardless](https://github.com/gocardless) 221 | - [Logspout](https://github.com/gliderlabs/logspout) - Log routing for Docker container logs by [@gliderlabs][gliderlabs] 222 | - [monit-docker](https://github.com/decryptus/monit-docker) - Monitor docker containers resources usage or status and execute docker commands or inside containers. [@decryptus][decryptus] 223 | - [NexClipper](https://github.com/NexClipper/NexClipper) - NexClipper is the container monitoring and performance management solution specialized in Docker, Apache Mesos, Marathon, DC/OS, Mesosphere, Kubernetes by [@Nexclipper](https://github.com/NexClipper) 224 | - [Out-of-the-box Host/Container Monitoring/Logging/Alerting Stack](https://github.com/uschtwill/docker_monitoring_logging_alerting) - Docker host and container monitoring, logging and alerting out of the box using cAdvisor, Prometheus, Grafana for monitoring, Elasticsearch, Kibana and Logstash for logging and elastalert and Alertmanager for alerting. Set up in 5 Minutes. Secure mode for production use with built-in [Automated Nginx Reverse Proxy (jwilder's)][nginxproxy]. 225 | - [Sidekick](https://github.com/runsidekick/sidekick) 💲 - Open source live application debugger like Chrome DevTools for your backend. Collect traces and generate logs on-demand without stopping & redeploying your applications. 226 | - [SuperVisor CPM](https://t0xic0der.medium.com/simply-accessible-container-performance-monitoring-with-supervisor-7fb47f925f3b) [Frontend Service](https://github.com/t0xic0der/supervisor-frontend-service/) and [Driver Service](https://github.com/t0xic0der/supervisor-driver-service/) :construction: - A simple and accessible FOSS container performance monitoring service written in Python by [@t0xic0der](https://github.com/t0xic0der/) 227 | - [SwarmAlert](https://github.com/gpulido/SwarmAlert) - Monitors a Docker Swarm and sends Pushover alerts when it finds a container with no healthy service task running. 228 | - [Zabbix Docker module](https://github.com/monitoringartist/Zabbix-Docker-Monitoring) - Zabbix module that provides discovery of running containers, CPU/memory/blk IO/net container metrics. Systemd Docker and LXC execution driver is also supported. It's a dynamically linked shared object library, so its performance is (~10x) better, than any script solution. 229 | - [Zabbix Docker](https://github.com/gomex/docker-zabbix) - Monitor containers automatically using zabbix LLD feature. 230 | 231 | ### Networking 232 | 233 | - [Calico][calico] - Calico is a pure layer 3 virtual network that allows containers over multiple docker-hosts to talk to each other. 234 | - [Flannel](https://github.com/coreos/flannel/) - Flannel is a virtual network that gives a subnet to each host for use with container runtimes. By [@coreos][coreos] 235 | - [Freeflow](https://github.com/Microsoft/Freeflow) - High performance container overlay networks on Linux. Enabling RDMA (on both InfiniBand and RoCE) and accelerating TCP to bare metal performance. By [@Microsoft](https://github.com/Microsoft) 236 | - [MyIP](https://github.com/jason5ng32/MyIP) - All in one IP Toolbox. Easy to check all your IPs, IP geolocation, check for DNS leaks, examine WebRTC connections, speed test, ping test, MTR test, check website availability, whois search and more. By [@jason5ng32](https://github.com/jason5ng32) 237 | - [netshoot](https://github.com/nicolaka/netshoot) - The netshoot container has a powerful set of networking tools to help troubleshoot Docker networking issues by [@nicolaka](https://github.com/nicolaka) 238 | - [Pipework](https://github.com/jpetazzo/pipework) - Software-Defined Networking for Linux Containers, Pipework works with "plain" LXC containers, and with the awesome Docker. By [@jpetazzo][jpetazzo] 239 | - [Weave][weave] (The Docker network) - Weave creates a virtual network that connects Docker containers deployed across multiple hosts. 240 | 241 | ### Orchestration 242 | 243 | - [Ansible Linux Docker](https://github.com/Peco602/ansible-linux-docker) - Run Ansible from a Linux container. By [@Peco602][peco602] 244 | - [athena](https://github.com/athena-oss/athena) - An automation platform with a plugin architecture that allows you to easily create and share services. 245 | - [blimp](https://github.com/tubesandlube/blimp) :skull: - Uses Docker Machine to easily move a container from one Docker host to another, show containers running against all of your hosts, replicate a container across multiple hosts and more by [@defermat](https://github.com/defermat) and [@schvin](https://github.com/schvin) 246 | - [CloudSlang](https://github.com/CloudSlang/cloud-slang) - CloudSlang is a workflow engine to create Docker process automation 247 | - [clusterdock](https://github.com/clusterdock/clusterdock) - Docker container orchestration to enable the testing of long-running cluster deployments 248 | - [Crane](https://github.com/Dataman-Cloud/crane) - Control plane based on docker built-in swarm [@Dataman-Cloud](https://github.com/Dataman-Cloud) 249 | - [Docker Flow Swarm Listener](https://github.com/docker-flow/docker-flow-swarm-listener) - Docker Flow Swarm Listener project is to listen to Docker Swarm events and send requests when a change occurs. By [@docker-flow][docker-flow] 250 | - [docker rollout](https://github.com/Wowu/docker-rollout) - Zero downtime deployment for Docker Compose services by [@Wowu](https://github.com/Wowu) 251 | - [gantryd](https://github.com/DevTable/gantryd) :skull: - A framework for easy management of docker-based components across machines by [@DevTable](https://github.com/DevTable) 252 | - [Haven](https://github.com/codeabovelab/haven-platform) - Haven is a simplified container management platform that integrates container, application, cluster, image, and registry managements. By [@codeabovelab](https://github.com/codeabovelab) 253 | - [Helios](https://github.com/spotify/helios) :skull: - A simple platform for deploying and managing containers across an entire fleet of servers by [@spotify][spotify] 254 | - [Kontena](https://github.com/kontena/kontena) :skull: - The developer friendly container and micro services platform. Works on any cloud, easy to setup, simple to use. 255 | - [Kubernetes](https://github.com/kubernetes/kubernetes) - Open source orchestration system for Docker containers by Google 256 | - [ManageIQ](https://github.com/ManageIQ/manageiq) - Discover, optimize and control your hybrid IT. By [ManageIQ](https://github.com/ManageIQ) 257 | - [Mantl](https://github.com/mantl/mantl) - :skull: Mantl is a modern platform for rapidly deploying globally distributed services 258 | - [Marathon](https://github.com/mesosphere/marathon) - :skull: Marathon is a private PaaS built on Mesos. It automatically handles hardware or software failures and ensures that an app is "always on" 259 | - [Mesos](https://github.com/apache/mesos) - Resource/Job scheduler for containers, VM's and physical hosts [@apache](https://mesos.apache.org/) 260 | - [Nebula](https://github.com/nebula-orchestrator) - A Docker orchestration tool designed to manage massive scale distributed clusters. 261 | - [Nomad](https://github.com/hashicorp/nomad) - Easily deploy applications at any scale. A Distributed, Highly Available, Datacenter-Aware Scheduler by [@hashicorp](https://github.com/hashicorp) 262 | - [Panamax](https://github.com/CenturyLinkLabs/panamax-ui) :skull: - An open-source project that makes deploying complex containerized apps as easy as Drag-and-Drop by [@CenturyLinkLabs][centurylinklabs]. 263 | - [Rancher](https://github.com/rancher/rancher) - An open source project that provides a complete platform for operating Docker in production by [@rancher][rancher]. 264 | - [RedHerd Framework](https://github.com/redherd-project/redherd-framework) - RedHerd is a collaborative and serverless framework for orchestrating a geographically distributed group of assets capable of simulating complex offensive cyberspace operations. By [@RedHerdProject](https://github.com/redherd-project). 265 | - [Swarm-cronjob](https://github.com/crazy-max/swarm-cronjob) - Create jobs on a time-based schedule on Swarm by [@crazy-max] 266 | 267 | ### PaaS 268 | 269 | - [Atlantis](https://github.com/ooyala/atlantis) :skull: - Atlantis is an Open Source PaaS for HTTP applications built on Docker and written in Go 270 | - [caprover](https://github.com/caprover/caprover) - [previously known as CaptainDuckDuck] Automated Scalable Webserver Package (automated Docker+nginx) - Heroku on Steroids 271 | - [Convox Rack](https://github.com/convox/rack) - Convox Rack is open source PaaS built on top of expert infrastructure automation and devops best practices. 272 | - [Dcw](https://github.com/pbertera/dcw) - Docker-compose SSH wrapper: a very poor man PaaS, exposing the docker-compose and custom-container commands defined in container labels. 273 | - [Dokku](https://github.com/dokku/dokku) - Docker powered mini-Heroku that helps you build and manage the lifecycle of applications (originally by [@progrium][progrium]) 274 | - [Empire](https://github.com/remind101/empire) - A PaaS built on top of Amazon EC2 Container Service (ECS) 275 | - [Exoframe](https://github.com/exoframejs/exoframe) - A self-hosted tool that allows simple one-command deployments using Docker 276 | - [Flynn](https://github.com/flynn/flynn) :skull: - A next generation open source platform as a service 277 | - [Hephy Workflow](https://github.com/teamhephy/workflow) - Open source PaaS for Kubernetes that adds a developer-friendly layer to any Kubernetes cluster, making it easy to deploy and manage applications. Fork of [Deis Workflow](https://github.com/deis/workflow) 278 | - [Krane](https://github.com/krane/krane) - Toolset for managing container workloads on remote servers 279 | - [Nanobox](https://github.com/nanobox-io/nanobox) :heavy_dollar_sign: - An application development platform that creates local environments that can then be deployed and scaled in the cloud. 280 | - [OpenShift][openshift] - An open source PaaS built on [Kubernetes][kubernetes] and optimized for Dockerized app development and deployment by [Red Hat](https://www.redhat.com/en) 281 | - [Tsuru](https://github.com/tsuru/tsuru) - Tsuru is an extensible and open source Platform as a Service software 282 | 283 | ### Reverse Proxy 284 | 285 | - [bunkerized-nginx](https://github.com/bunkerity/bunkerized-nginx) - Web app hosting and reverse proxy secure by default. By [@bunkerity](https://github.com/bunkerity) 286 | - [caddy-docker-proxy](https://github.com/lucaslorentz/caddy-docker-proxy) - Caddy-based reverse proxy, configured with service or container labels. By [@lucaslorentz](https://github.com/lucaslorentz) 287 | - [caddy-docker-upstreams](https://github.com/invzhi/caddy-docker-upstreams) - Docker upstreams module for Caddy, configured with container labels. By [@invzhi](https://github.com/invzhi) 288 | - [Docker Dnsmasq Updater](https://github.com/moonbuggy/docker-dnsmasq-updater) - Update a remote dnsmasq server with Docker container hostnames. 289 | - [docker-flow-proxy](https://github.com/docker-flow/docker-flow-proxy) - Reconfigures proxy every time a new service is deployed, or when a service is scaled. By [@docker-flow][docker-flow] 290 | - [docker-proxy](https://github.com/silarsis/docker-proxy) :skull: - Transparent proxy for docker containers, run in a docker container. By [@silarsis](https://github.com/silarsis) 291 | - [fabio](https://github.com/fabiolb/fabio) - A fast, modern, zero-conf load balancing HTTP(S) router for deploying microservices managed by consul. By [@magiconair](https://github.com/magiconair) (Frank Schroeder) 292 | - [h2o-proxy](https://github.com/zchee/h2o-proxy) :skull: - Automated H2O reverse proxy for Docker containers. An alternative to [jwilder/nginx-proxy][nginxproxy] by [@zchee](https://github.com/zchee) 293 | - [Let's Encrypt Nginx-proxy Companion](https://github.com/nginx-proxy/docker-letsencrypt-nginx-proxy-companion) - A lightweight companion container for the nginx-proxy. It allow the creation/renewal of Let's Encrypt certificates automatically. By [@JrCs](https://github.com/JrCs) 294 | - [muguet](https://github.com/mattallty/muguet) :skull: - DNS Server & Reverse proxy for Docker environments. By [@mattallty](https://github.com/mattallty) 295 | - [Nginx Proxy Manager](https://github.com/jc21/nginx-proxy-manager) - A beautiful web interface for proxying web based services with SSL. By [@jc21](https://github.com/jc21) 296 | - [nginx-proxy][nginxproxy] - Automated nginx proxy for Docker containers using docker-gen by [@jwilder][jwilder] 297 | - [Swarm Ingress Router](https://github.com/tpbowden/swarm-ingress-router) :skull: - Route DNS names to Swarm services based on labels. By [@tpbowden](https://github.com/tpbowden/) 298 | - [Swarm Router](https://github.com/flavioaiello/swarm-router) - A «zero config» service name based router for docker swarm mode with a fresh and more secure approach. By [@flavioaiello](https://github.com/flavioaiello) 299 | - [Træfɪk](https://github.com/containous/traefik) - Automated reverse proxy and load-balancer for Docker, Mesos, Consul, Etcd... By [@EmileVauge](https://github.com/emilevauge) 300 | 301 | ### Runtime 302 | 303 | - [aind](https://github.com/aind-containers/aind) - :skull: AinD launches Android apps in Docker, by nesting Anbox containers inside Docker by [@aind-containers](https://github.com/aind-containers) 304 | - [cri-o](https://github.com/cri-o/cri-o) - Open Container Initiative-based implementation of Kubernetes Container Runtime Interface by [cri-o](https://github.com/cri-o) 305 | - [lxc](https://github.com/lxc/lxc) - LXC - Linux Containers 306 | - [podman](https://github.com/containers/libpod) - libpod is a library used to create container pods. Home of Podman by [@containers][containers] 307 | - [rlxc](https://github.com/brauner/rlxc) - LXC binary written in Rust by [@brauner](https://github.com/brauner) 308 | - [runtime-tools](https://github.com/opencontainers/runtime-tools) - oci-runtime-tool is a collection of tools for working with the OCI runtime specification by [@opencontainers](https://github.com/opencontainers) 309 | 310 | ### Security 311 | 312 | - [Anchor](https://github.com/SongStitch/anchor/) - A tool to ensure reproducible builds by pinning dependencies inside your Dockerfiles [@SongStitch](https://github.com/songStitch/) 313 | - [Anchor Enterprise](https://anchore.com/) :heavy_dollar_sign: - Analyze images for CVE vulnerabilities and against custom security policies by [@Anchor](https://github.com/anchore) 314 | - [Aqua Security](https://www.aquasec.com) :heavy_dollar_sign: - Securing container-based applications from Dev to Production on any platform 315 | - [bane](https://github.com/genuinetools/bane) - AppArmor profile generator for Docker containers by [@genuinetools][genuinetools] 316 | - [CetusGuard](https://github.com/hectorm/cetusguard) - CetusGuard is a tool that protects the Docker daemon socket by filtering calls to its API endpoints 317 | - [CIS Docker Benchmark](https://github.com/dev-sec/cis-docker-benchmark) - This [InSpec][inspec] compliance profile implement the CIS Docker 1.12.0 Benchmark in an automated way to provide security best-practice tests around Docker daemon and containers in a production environment. By [@dev-sec](https://github.com/dev-sec) 318 | - [Checkov](https://github.com/bridgecrewio/checkov) - Static analysis for infrastructure as code manifests (Terraform, Kubernetes, Cloudformation, Helm, Dockerfile, Kustomize) find security misconfiguration and fix them. By [@bridgecrew](https://github.com/bridgecrewio) 319 | - [Clair](https://github.com/quay/clair) - Clair is an open source project for the static analysis of vulnerabilities in appc and docker containers. By [@coreos][coreos] 320 | - [Dagda](https://github.com/eliasgranderubio/dagda) - Dagda is a tool to perform static analysis of known vulnerabilities, trojans, viruses, malware & other malicious threats in docker images/containers and to monitor the docker daemon and running docker containers for detecting anomalous activities. By [@eliasgranderubio](https://github.com/eliasgranderubio) 321 | - [Deepfence Enterprise](https://deepfence.io) :heavy_dollar_sign: - Full life cycle Cloud Native Workload Protection platform for kubernetes, virtual machines and serverless. By [@deepfence][deepfence] 322 | - [Deepfence Threat Mapper](https://github.com/deepfence/ThreatMapper) - Powerful runtime vulnerability scanner for kubernetes, virtual machines and serverless. By [@deepfence][deepfence] 323 | - [docker-bench-security](https://github.com/docker/docker-bench-security) - script that checks for dozens of common best-practices around deploying Docker containers in production. By [@docker][docker] 324 | - [docker-explorer](https://github.com/google/docker-explorer) - A tool to help forensicate offline docker acquisitions by [@Google][google] 325 | - [docker-lock](https://github.com/safe-waters/docker-lock) - A cli-plugin for docker to automatically manage image digests by tracking them in a separate Lockfile. By [@safe-waters][safe-waters] 326 | - [dvwassl](https://github.com/Peco602/dvwassl) - SSL-enabled Damn Vulnerable Web App to test Web Application Firewalls. By [@Peco602][peco602] 327 | - [KICS](https://github.com/checkmarx/kics) - an infrastructure-as-code scanning tool, find security vulnerabilities, compliance issues, and infrastructure misconfigurations early in the development cycle. Can be extended for additional policies. By [Checkmarx](https://github.com/Checkmarx) 328 | - [notary](https://github.com/theupdateframework/notary) - a server and a client for running and interacting with trusted collections. By [@TUF](https://github.com/theupdateframework) 329 | - [oscap-docker](https://github.com/OpenSCAP/openscap) - OpenSCAP provides oscap-docker tool which is used to scan Docker containers and images. By [OpenSCAP](https://github.com/OpenSCAP) 330 | - [Prisma Cloud](https://www.paloaltonetworks.com/prisma/cloud) :heavy_dollar_sign: - (previously Twistlock Security Suite) detects vulnerabilities, hardens container images, and enforces security policies across the lifecycle of applications. 331 | - [Syft](https://github.com/anchore/syft) - CLI tool and library for generating a Software Bill of Materials (SBOM) from container images and filesystems. 332 | - [Sysdig Falco](https://github.com/falcosecurity/falco) - Sysdig Falco is an open source container security monitor. It can monitor application, container, host, and network activity and alert on unauthorized activity. 333 | - [Sysdig Secure](https://sysdig.com/solutions/cloud-threat-detection-and-response/) :heavy_dollar_sign: - Sysdig Secure addresses run-time security through behavioral monitoring and defense, and provides deep forensics based on open source Sysdig for incident response. 334 | - [Trend Micro DeepSecurity](https://www.trendmicro.com/en_us/business/products/hybrid-cloud/deep-security.html) :heavy_dollar_sign: - Trend Micro DeepSecurity offers runtime protection for container workloads and hosts as well as preruntime scanning of images to identify vulnerabilities, malware and content such as hardcoded secrets. 335 | - [Trivy](https://github.com/aquasecurity/trivy) - Aqua Security's open source simple and comprehensive vulnerability scanner for containers (suitable for CI). 336 | 337 | ### Service Discovery 338 | 339 | - [docker-consul](https://github.com/gliderlabs/docker-consul) by [@progrium][progrium] 340 | - [etcd](https://github.com/etcd-io/etcd) - Distributed reliable key-value store for the most critical data of a distributed system by [@etcd-io](https://github.com/etcd-io) (former part of CoreOS) 341 | - [istio](https://github.com/istio/istio) - An open platform to connect, manage, and secure microservices by [@istio](https://github.com/istio) 342 | - [proxy](https://github.com/factorish/proxy) :skull: - lightweight nginx based load balancer self using service discovery provided by registrator. by [@factorish](https://github.com/factorish) 343 | - [registrator](https://github.com/gliderlabs/registrator) - Service registry bridge for Docker by [@gliderlabs][gliderlabs] and [@progrium][progrium] 344 | 345 | ### Volume Management / Data 346 | 347 | - [Blockbridge](https://github.com/blockbridge/blockbridge-docker-volume) :heavy_dollar_sign:- The Blockbridge plugin is a volume plugin that provides access to an extensible set of container-based persistent storage options. It supports single and multi-host Docker environments with features that include tenant isolation, automated provisioning, encryption, secure deletion, snapshots and QoS. By [@blockbridge](https://github.com/blockbridge) 348 | - [Convoy](https://github.com/rancher/convoy) :skull: - an open-source Docker volume driver that can snapshot, backup and restore Docker volumes anywhere. By [@rancher][rancher] 349 | - [Docker Machine NFS](https://github.com/adlogix/docker-machine-nfs) :skull: - Activates NFS for an existing boot2docker box created through Docker Machine on OS X. 350 | - [Docker Unison](https://github.com/leighmcculloch/docker-unison) - :skull: A docker volume container using Unison for fast two-way folder sync. Created as an alternative to slow boot2docker volumes on OS X. By [@leighmcculloch](https://github.com/leighmcculloch) 351 | - - [Label Backup](https://github.com/resulgg/label-backup) - A lightweight, Docker-aware backup agent that automatically discovers and backs up containerized databases (PostgreSQL, MySQL, MongoDB, Redis) based on Docker labels. Supports local storage and S3-compatible destinations with flexible scheduling via cron expressions. 352 | - [Docker Volume Backup](https://github.com/offen/docker-volume-backup) Backup Docker volumes locally or to any S3 compatible storage. By [@offen](https://github.com/offen) 353 | - [Local Persist](https://github.com/MatchbookLab/local-persist) Specify a mountpoint for your local volumes (created via `docker volume create`) so that files will always persist and so you can mount to different directories in different containers. 354 | - [Minio](https://github.com/minio/minio) - S3 compatible object storage server in Docker containers 355 | - [Netshare](https://github.com/ContainX/docker-volume-netshare) Docker NFS, AWS EFS, Ceph & Samba/CIFS Volume Plugin. By [@ContainX][containx] 356 | - [portworx](https://portworx.com) :heavy_dollar_sign: - Decentralized storage solution for persistent, shared and replicated volumes. 357 | - [quobyte](https://www.quobyte.com/) :heavy_dollar_sign: - fully fault-tolerant distributed file system with a docker volume driver 358 | - [REX-Ray](https://github.com/rexray/rexray) provides a vendor agnostic storage orchestration engine. The primary design goal is to provide persistent storage for Docker, Kubernetes, and Mesos. By[@thecodeteam](https://github.com/thecodeteam) (DELL Technologies) 359 | - [Storidge](https://github.com/Storidge/quick-start) :heavy_dollar_sign: - Software-defined Persistent Storage for Kubernetes and Docker Swarm 360 | 361 | ### User Interface 362 | 363 | #### IDE integrations 364 | 365 | - JetBrains IDEs (IntelliJ IDEA, GoLand, WebStorm, CLion etc.) has [built-in Docker plugin](https://www.jetbrains.com/help/idea/docker.html#managing-images) 366 | - Eclipse [Docker Tooling plugin](https://www.eclipse.org/community/eclipse_newsletter/2016/july/article2.php) 367 | - [denops-docker.vim](https://github.com/skanehira/denops-docker.vim) - :skull: Manage docker containers and images in Vim. By [@skanehira] 368 | - [docker.vim](https://github.com/skanehira/docker.vim) :skull: - Manage docker containers and images in Vim. By [@skanehira] 369 | - [docker.el](https://github.com/Silex/docker.el) Manage docker from Emacs by [@Silex](https://github.com/Silex) 370 | 371 | #### Desktop 372 | 373 | Native desktop applications for managing and monitoring docker hosts and clusters 374 | 375 | - [Docker Desktop](https://www.docker.com/products/docker-desktop/) - Official native app. Only for Windows and MacOS 376 | - [Dockeron](https://github.com/dockeron/dockeron) :skull: - A project built on Electron + Vue.js for Docker on desktop. [@fluency03](https://github.com/fluency03) 377 | - [DockStation](https://github.com/DockStation/dockstation) - A developer centric UI to configure, monitor, and manage services and containers [@dock_station](https://twitter.com/dock_station) 378 | - [Lifeboat](https://github.com/jplhomer/lifeboat) - :skull: An easy way to launch Docker projects with a graphical interface on your Mac. [@jplhomer](https://github.com/jplhomer) 379 | - [Simple Docker UI](https://github.com/felixgborrego/simple-docker-ui) - built on Electron. By [@felixgborrego](https://github.com/felixgborrego/) 380 | - [Stevedore](https://github.com/slonopotamus/stevedore) - Good Docker Desktop replacement for Windows. Both Linux and Windows Containers are supported. [@slonopotamus](https://github.com/slonopotamus) 381 | 382 | #### Terminal 383 | 384 | ##### Terminal UI 385 | - [ctop (1)](https://github.com/yadutaf/ctop) - :skull: A command line / text based Linux Containers monitoring tool that works just like you expect (Python) by [@yadutaf](https://github.com/yadutaf) 386 | - [ctop (2)](https://github.com/bcicen/ctop) - :skull: Top-like interface for container metrics (Golang) by [@bcicen](https://github.com/bcicen/) 387 | - [dive](https://github.com/wagoodman/dive) - A tool for exploring each layer in a docker image. By [wagoodman](https://github.com/wagoodman). 388 | - [dockdash](https://github.com/byrnedo/dockdash) detailed stats. By [@byrnedo] 389 | - [Docker-mon](https://github.com/icecrime/docker-mon) :skull: - Console-based Docker monitoring by [@icecrime](https://github.com/icecrime) 390 | - [dockly](https://github.com/lirantal/dockly) - An interactive shell UI for managing Docker containers by [@lirantal](https://github.com/lirantal) 391 | - [DockSTARTer](https://github.com/GhostWriters/DockSTARTer) - DockSTARTer helps you get started with home server apps running in Docker by [GhostWriters](https://github.com/GhostWriters) 392 | - [docui](https://github.com/skanehira/docui) - :skull: An interactive shell UI for managing Docker containers. Also works in Windows. By [@skanehira] 393 | - [dry](https://github.com/moncho/dry) - An interactive CLI for Docker containers by [@moncho](https://github.com/moncho) 394 | - [goManageDocker](https://github.com/ajayd-san/gomanagedocker) - TUI tool to view and manage your docker objects blazingly fast with sensible keybindings, also supports VIM navigation out of the box by [@ajay-dsan](https://github.com/ajayd-san) 395 | - [lazydocker](https://github.com/jesseduffield/lazydocker) - The lazier way to manage everything docker. A simple terminal UI for both docker and docker-compose, written in Go with the gocui library. By [@jesseduffield](https://github.com/jesseduffield) 396 | - [lazyjournal](https://github.com/Lifailon/lazyjournal) - A interface for reading and filtering the logs output of Docker and Podman containers like [Dozzle](https://github.com/amir20/dozzle) but for the terminal with support for fuzzy find, regex and output coloring 397 | - [oxker](https://github.com/mrjackwills/oxker) - A simple tui to view & control docker containers. Written in [Rust](https://www.rust-lang.org/), making heavy use of [ratatui](https://github.com/tui-rs-revival/ratatui) & [Bollard](https://github.com/fussybeaver/bollard), by [@mrjackwills](https://github.com/mrjackwills) 398 | - [sen](https://github.com/TomasTomecek/sen) - :skull: Terminal user interface for docker engine, by [@TomasTomecek][tomastomecek] 399 | 400 | ##### CLI tools 401 | 402 | - [captain](https://github.com/jenssegers/captain) - Easily start and stop docker compose projects from any directory. By [@jenssegers](https://github.com/jenssegers) 403 | - [dcinja](https://github.com/Falldog/dcinja) - The powerful and smallest binary size of template engine for docker command line environment. By [@Falldog](https://github.com/Falldog) 404 | - [dcp](https://github.com/exdx/dcp) - A simple tool for copying files from container filesystems. By [@exdx](https://github.com/exdx) 405 | - [dctl](https://github.com/FabienD/docker-stack) - dctl is a Cli tool that helps developers by allowing them to execute all docker compose commands anywhere in the terminal, and more. By [FabienD](https://github.com/FabienD) 406 | - [decompose](https://github.com/s0rg/decompose) - Reverse-engineering tool for docker environments. By [@s0rg](https://github.com/s0rg) 407 | - [docker-ls](https://github.com/mayflower/docker-ls) - CLI tools for browsing and manipulating docker registries by [@mayflower](https://github.com/mayflower) 408 | - [docker pushrm](https://github.com/christian-korneck/docker-pushrm) - A Docker CLI plugin that lets you push the README.md file from the current directory to Docker Hub. Also supports Quay and Harbor. By [@christian-korneck](https://github.com/christian-korneck) 409 | - [dockersql](https://github.com/crosbymichael/dockersql) - :skull: A command line interface to query Docker using SQL by [@crosbymichael](https://github.com/crosbymichael) 410 | - [DVM](https://github.com/howtowhale/dvm) - Docker version manager by [@howtowhale](https://github.com/howtowhale) 411 | - [goinside](https://github.com/iamsoorena/goinside) - Get inside a running docker container easily. by [@iamsoorena](https://github.com/iamsoorena) 412 | - [ns-enter](https://github.com/jpetazzo/nsenter) - :skull: no more ssh, enter name spaces of container by [@jpetazzo][jpetazzo] 413 | - [Pdocker](https://github.com/g31s/Pdocker) - A simple tool to manage and maintain Docker for personal projects by [@g31s](https://github.com/g31s) 414 | - [proco](https://github.com/shiwaforce/poco) - Proco will help you to organise and manage Docker, Docker-Compose, Kubernetes projects of any complexity using simple YAML config files to shorten the route from finding your project to initialising it in your local environment. by [@shiwaforce](https://github.com/shiwaforce) 415 | - [reg](https://github.com/genuinetools/reg) - :skull: Docker registry v2 command line client by [@genuinetools][genuinetools] 416 | - [scuba](https://github.com/JonathonReinhart/scuba) - Transparently use Docker containers to encapsulate software build environments, by [@JonathonReinhart](https://github.com/JonathonReinhart) 417 | - [skopeo](https://github.com/containers/skopeo) - Work with remote images registries - retrieving information, images, signing content by [@containers][containers] 418 | - [supdock](https://github.com/segersniels/supdock) - Allows for slightly more visual usage of Docker with an interactive prompt. By [@segersniels](https://github.com/segersniels) 419 | - [tsaotun](https://github.com/qazbnm456/tsaotun) - Python based Assistance for Docker by [@qazbnm456](https://github.com/qazbnm456) 420 | - [wharfee](https://github.com/j-bennet/wharfee) - :skull: Autocompletion and syntax highlighting for Docker commands. by [@j-bennet](https://github.com/j-bennet) 421 | 422 | ##### Other 423 | 424 | - [dext-docker-registry-plugin](https://github.com/vutran/dext-docker-registry-plugin) - Search the Docker Registry with the Dext smart launcher. By [@vutran](https://github.com/vutran) 425 | - [docker-ssh](https://github.com/jeroenpeeters/docker-ssh) - SSH Server for Docker containers ~ Because every container should be accessible. By [@jeroenpeeters](https://github.com/jeroenpeeters) 426 | - [dockercraft](https://github.com/docker/dockercraft) - :skull: Docker + Minecraft = Dockercraft by [@docker][docker] 427 | - [dockerfile-mode](https://github.com/spotify/dockerfile-mode) An emacs mode for handling Dockerfiles by [@spotify][spotify] 428 | - [MultiDocker](https://github.com/marty90/multidocker) - Create a secure multi-user Docker machine, where each user is segregated into an indepentent container. 429 | - [Powerline-Docker](https://github.com/adrianmo/powerline-docker) - A Powerline segment for showing the status of Docker containers by [@adrianmo](https://github.com/adrianmo) 430 | 431 | #### Web 432 | 433 | - [Admiral](https://github.com/vmware/admiral) - :skull: Admiral™ is a highly scalable and very lightweight Container Management platform for deploying and managing container based applications. By [VMWare][vmware] 434 | - [CASA](https://github.com/knrdl/casa) - Outsource the administration of a handful of containers to your co-workers, by [@knrdl](https://github.com/knrdl) 435 | - [Container Web TTY](https://github.com/wrfly/container-web-tty) - Connect your containers via a web-tty [@wrfly](https://github.com/wrfly) 436 | - [dockemon](https://github.com/ProductiveOps/dokemon) - Docker Container Management GUI by [@productiveops](https://github.com/ProductiveOps) 437 | - [Docker Compose UI](https://github.com/francescou/docker-compose-ui) - :skull: Manage docker-compose via HTTP. docker-compose-ui runs in a Docker container, mounts the hosts docker socket and exposes a RESTful API and AngularJS GUI 438 | - [Docker Registry Browser](https://github.com/klausmeyer/docker-registry-browser) - Web Interface for the Docker Registry HTTP API v2 by [@klausmeyer](https://github.com/klausmeyer) 439 | - [Docker Registry UI (Joxit)](https://github.com/Joxit/docker-registry-ui) - :skull: The simplest and cleanest UI for private registries by [@Joxit](https://github.com/Joxit) 440 | - [Docker Registry UI](https://github.com/atcol/docker-registry-ui) - A web UI for easy private/local Docker Registry integration by [@atcol](https://github.com/atcol) 441 | - [docker-registry-web](https://github.com/mkuchin/docker-registry-web) - Web UI, authentication service and event recorder for private docker registry v2 by [@mkuchin](https://github.com/mkuchin) 442 | - [docker-swarm-visualizer](https://github.com/dockersamples/docker-swarm-visualizer) - Visualizes Docker services on a Docker Swarm (for running demos). 443 | - [dockering-on-rails](https://github.com/Electrofenster/dockerding-on-rails) :skull: - Simple Web-Interface for Docker with a lot of features by [@Electrofenster](https://github.com/Electrofenster/) 444 | - [DockerSurfer](https://github.com/Simone-Erba/DockerSurfer) :skull: - A web service for analyze and browse dependencies between Docker images in the Docker registry, by [@Simone-Erba](https://github.com/Simone-Erba/) 445 | - [dockge](https://github.com/louislam/dockge) - easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager by [@louislam](https://github.com/louislam). 446 | - [Komodo](https://github.com/mbecker20/komodo) - A tool to build and deploy software on many servers 447 | - [Kubevious](https://github.com/kubevious/kubevious) - A highly visual web UI for Kubernetes which renders configuration and state in an application centric way by [@rubenhak](https://github.com/rubenhak). 448 | - [Mafl](https://github.com/hywax/mafl) - Minimalistic flexible homepage by [@hywax](https://github.com/hywax/) 449 | - [netdata](https://github.com/netdata/netdata) - Real-time performance monitoring 450 | - [OctoLinker](https://github.com/OctoLinker/OctoLinker) - A browser extension for GitHub that makes the image name in a `Dockerfile` clickable and redirect you to the related Docker Hub page. 451 | - [Portainer](https://github.com/portainer/portainer) - A lightweight management UI for managing your Docker hosts or Docker Swarm clusters by [@portainer](https://github.com/portainer) 452 | - [Rapid Dashboard](https://github.com/ozlerhakan/rapid) - A simple query dashboard to use Docker Remote API by [@ozlerhakan](https://github.com/ozlerhakan/) 453 | - [Seagull](https://github.com/tobegit3hub/seagull) - Friendly Web UI to monitor docker daemon. by [@tobegit3hub](https://github.com/tobegit3hub) 454 | - [Swarmpit](https://github.com/swarmpit/swarmpit) - Swarmpit provides simple and easy to use interface for your Docker Swarm cluster. You can manage your stacks, services, secrets, volumes, networks etc. 455 | - [Swirl](https://github.com/cuigh/swirl) - Swirl is a web management tool for Docker, focused on swarm cluster By [@cuigh](https://github.com/cuigh/) 456 | - [Theia](https://github.com/eclipse-theia/theia) - Extensible platform to develop full-fledged multi-language Cloud & Desktop IDE-like products with state-of-the-art web technologies. 457 | - [Yacht](https://github.com/SelfhostedPro/Yacht) :construction: - A Web UI for docker that focuses on templates and ease of use in order to make deployments as easy as possible. By [@SelfhostedPro](https://github.com/SelfhostedPro) 458 | 459 | ## Docker Images 460 | 461 | ### Base Tools 462 | 463 | Tools and applications that are either installed inside containers or designed to be run as a [sidecar](https://learn.microsoft.com/en-us/azure/architecture/patterns/sidecar) 464 | 465 | - [amicontained](https://github.com/genuinetools/amicontained) - Container introspection tool. Find out what container runtime is being used as well as features available by [@genuinetools][genuinetools] 466 | - [Chaperone](https://github.com/garywiz/chaperone) - A single PID1 process designed for docker containers. Does user management, log management, startup, zombie reaping, all in one small package. by [@garywiz](https://github.com/garywiz) 467 | - [ckron](https://github.com/nicomt/ckron) - A cron-style job scheduler for docker, by [@nicomt](https://github.com/nicomt) 468 | - [CoreOS][coreos] - Linux for Massive Server Deployments 469 | - [distroless](https://github.com/GoogleContainerTools/distroless) - Language focused docker images, minus the operating system, by [@GoogleContainerTools][googlecontainertools] 470 | - [docker-alpine](https://github.com/gliderlabs/docker-alpine) - A super small Docker base image _(5MB)_ using Alpine Linux by [@gliderlabs][gliderlabs] 471 | - [docker-gen](https://github.com/jwilder/docker-gen) - Generate files from docker container meta-data by [@jwilder][jwilder] 472 | - [dockerize](https://github.com/powerman/dockerize) - Utility to simplify running applications in docker containers by [@jwilder][jwilder], [@powerman][powerman] 473 | - [GoSu](https://github.com/tianon/gosu) - Run this specific application as this specific user and get out of the pipeline (entrypoint script tool) by [@tianon](https://github.com/tianon) 474 | - [is-docker](https://github.com/sindresorhus/is-docker) - Check if the process is running inside a Docker container by [@sindresorhus][sindresorhus] 475 | - [lstags](https://github.com/ivanilves/lstags) - sync Docker images across registries by [@ivanilves](https://github.com/ivanilves) 476 | - [NVIDIA-Docker](https://github.com/NVIDIA/nvidia-docker) - :skull: The NVIDIA Container Runtime for Docker by [@NVIDIA][nvidia] 477 | - [Ofelia](https://github.com/mcuadros/ofelia/) - Ofelia is a modern and low footprint job scheduler for docker environments, built on Go. Ofelia aims to be a replacement for the old fashioned cron. Supports configuration from container labels and/or configuration files. 478 | - [SparkView](https://github.com/beyondssl/sparkview-container) - Access VMs, desktops, servers or applications anytime and from anywhere, without complex and costly client roll-outs or user management. 479 | - [su-exec](https://github.com/ncopa/su-exec) - This is a simple tool that will simply execute a program with different privileges. The program will be executed directly and not run as a child, like su and sudo does, which avoids TTY and signal issues. Why reinvent gosu? This does more or less exactly the same thing as gosu but it is only 10kb instead of 1.8MB. By [ncopa](https://github.com/ncopa) 480 | - [sue](https://github.com/theAkito/sue) - Executes a program as a user different from the user running sue. This is a maintainable alternative to ncopa/su-exec, which is the better tianon/gosu. This one is far better (higher performance, smaller size), than the original gosu, however it is far easier to maintain, than su-exec, which is written in plain C. Made by [Akito][akito] 481 | - [supercronic](https://github.com/aptible/supercronic) - crontab-compatible job runner, designed specifically to run in containers by [@aptible](https://github.com/aptible/) 482 | - [TrivialRC](https://github.com/vorakl/TrivialRC) - A minimalistic Runtime Configuration system and process manager for containers [@vorakl](https://github.com/vorakl) 483 | 484 | ### Builder 485 | 486 | Applications designed to help or simplify building **new** images 487 | 488 | - [ansible-bender](https://github.com/ansible-community/ansible-bender) - A tool utilising `ansible` and `buildah` by [@TomasTomecek][tomastomecek] 489 | - [buildah](https://github.com/containers/buildah) - A tool that facilitates building OCI images by [@containers][containers] 490 | - [BuildKit](https://github.com/moby/buildkit) - Concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit by [@moby project](https://github.com/moby) 491 | - [cekit](https://github.com/cekit/cekit) - A tool used by openshift to build base images using different build engines by [@cekit](https://github.com/cekit). 492 | - [container-diff](https://github.com/GoogleContainerTools/container-diff) - :skull: An image tool for comparing and analyzing container images by [@GoogleContainerTools][googlecontainertools] 493 | - [container-factory](https://github.com/mutable/container-factory) - Produces Docker images from tarballs of application source code by [@mutable](https://github.com/mutable) 494 | - [copy-docker-image](https://github.com/mdlavin/copy-docker-image) - Copy a Docker image between registries without a full Docker installation by [@mdlavin](https://github.com/mdlavin) 495 | - [Derrick](https://github.com/alibaba/derrick) - A tool help you to automate the generation of Dockerfile and dockerize application by scanning the code. By [@alibaba](https://github.com/alibaba). 496 | - [dlayer](https://github.com/orisano/dlayer) - docker layer analyzer by [@orisano](https://github.com/orisano) 497 | - [docker-companion](https://github.com/mudler/docker-companion) - A command line tool written in Golang to squash and unpack docker images by [@mudler](https://github.com/mudler/) 498 | - [docker-make](https://github.com/CtripCloud/docker-make) - Build, tag,and push a bunch of related docker images via a single command. 499 | - [docker-replay](https://github.com/bcicen/docker-replay) - Generate `docker run`command and options from running containers. By [bcicen](https://github.com/bcicen) 500 | - [docker-repack](https://github.com/orf/docker-repack) - Repacks a Docker image into a smaller, more efficient version that makes it significantly faster to pull. By [orf](https://github.com/orf) 501 | - [DockerMake](https://github.com/avirshup/DockerMake) - A reproducible Docker image build system for complex software stacks. By [@avirshup](https://github.com/avirshup) 502 | - [DockerSlim](https://github.com/docker-slim/docker-slim) shrinks fat Docker images creating the smallest possible images. 503 | - [Dockly](https://github.com/swipely/dockly) - Dockly is a gem made to ease the pain of packaging an application in Docker by [@swipely](https://github.com/swipely/) 504 | - [dockramp](https://github.com/jlhawn/dockramp) :skull: - Proof of Concept: A Client Driven Docker Image Builder by [@jlhawn](https://github.com/jlhawn) 505 | - [essex](https://github.com/utensils/essex) - Boilerplate for Docker Based Projects: Essex is a CLI utility written in bash to quickly setup clean and consistent Docker projects with Makefile driven workflows. [@jamesbrink](https://github.com/jamesbrink) 506 | - [HPC Container Maker](https://github.com/NVIDIA/hpc-container-maker) - Generates Dockerfiles from a high level Python recipe, including building blocks for High-Performance Computing components by [@NVIDIA][nvidia] 507 | - [img](https://github.com/genuinetools/img) - Standalone, daemon-less, unprivileged Dockerfile and OCI compatible container image builder by [@genuinetools][genuinetools] 508 | - [kaniko](https://github.com/GoogleContainerTools/kaniko) - Build Container Images In Kubernetes. By [@GoogleContainerTools][googlecontainertools] 509 | - [makisu](https://github.com/uber/makisu) - :skull: Uber's fast and flexible unprivileged image builder for Mesos and Kubernetes, with distributed cache support. By [@uber](https://github.com/uber) 510 | - [packer](https://developer.hashicorp.com/packer/integrations/hashicorp/docker/latest/components/builder/docker) - Hashicorp tool to build machine images including docker image integrated with configuration management tools like chef, puppet, ansible 511 | - [portainer](https://github.com/duedil-ltd/portainer) - Apache Mesos framework for building Docker images by [@duedil-ltd](https://github.com/duedil-ltd) 512 | - [Production-Ready Python Containers :heavy_dollar_sign:](https://pythonspeed.com/products/pythoncontainer/) - A template for creating production-ready Docker images for Python applications. 513 | - [RAUDI](https://github.com/cybersecsi/RAUDI) - A tool to automatically update (and optionally push to Docker Hub) Docker Images for 3rd party software whenever theres is a new release/update/commit. By [@SecSI](https://github.com/cybersecsi) 514 | - [runlike](https://github.com/lavie/runlike) - Generate `docker run`command and options from running containers by [@lavie](https://github.com/lavie) 515 | - [SkinnyWhale](https://github.com/djosephsen/skinnywhale) :skull: - Skinnywhale helps you make smaller (as in megabytes) Docker containers. 516 | - [Smith](https://github.com/oracle/smith) - :skull: A Micocontainer Builder and can perform multi-stage builds after the image is built [Oracle][oracle] 517 | - [userdef](https://github.com/theAkito/userdef) - An advanced `adduser` for your Alpine based Docker images. Made by [Akito][akito] 518 | - [Whaler](https://github.com/P3GLEG/Whaler) - Program to reverse Docker images into Dockerfiles by [@P3GLEG](https://github.com/P3GLEG/). 519 | - [Whales](https://github.com/Gueils/whales) - A tool to automatically dockerize your applications by [@icalialabs](https://github.com/IcaliaLabs). 520 | 521 | ### Dockerfile 522 | 523 | - [chaperone-docker](https://github.com/garywiz/chaperone-docker) - A set of images using the Chaperone process manager, including a lean Alpine image, LAMP, LEMP, and bare-bones base kits. 524 | - [Dockerfile Generator](https://github.com/ozankasikci/dockerfile-generator) `dfg` is both a Go library and an executable that produces valid Dockerfiles using various input channels. 525 | - [Dockerfile Project](https://dockerfile.github.io/) - Trusted Automated Docker Builds. Dockerfile Project maintains a central repository of Dockerfile for various popular open source software services runnable on a Docker container. 526 | - [dockerfilegraph](https://github.com/patrickhoefler/dockerfilegraph) - Visualize your multi-stage Dockerfiles. By [@PatrickHoefler](https://github.com/patrickhoefler) 527 | - [Dockershelf](https://github.com/Dockershelf/dockershelf) - A repository that serves as a collector for docker recipes that are universal, efficient and slim. Images are updated, tested and published daily via a Travis cron job. Maintained by [@CollageLabs](https://github.com/CollageLabs). 528 | - [dockmoor](https://github.com/MeneDev/dockmoor) :skull: - Manage docker image references and help to create reproducible builds with Docker. By [@MeneDev](https://github.com/MeneDev) 529 | - [Vektorcloud](https://github.com/vektorcloud) - A collection of minimal, Alpine-based Docker images 530 | 531 | Examples by: 532 | 533 | - [@0xy](https://gitlab.com/0xy/dockerfiles) 534 | - [@arun-gupta](https://github.com/arun-gupta/docker-images) 535 | - [@awesome-startup](https://github.com/awesome-startup/docker-compose) 536 | - [@crosbymichael](https://github.com/crosbymichael/Dockerfiles) 537 | - [@jessfraz](https://github.com/jessfraz/dockerfiles) 538 | - [@komljen](https://github.com/komljen/dockerfile-examples) 539 | - [@kstaken](https://github.com/kstaken/dockerfile-examples) 540 | - [@ondrejmo](https://github.com/ondrejmo/Dockerfiles) 541 | - [@vimagick](https://github.com/vimagick/dockerfiles) 542 | 543 | ### Linter 544 | 545 | - [docker-image-size-limit](https://github.com/wemake-services/docker-image-size-limit) - A tool to keep an eye on your docker images size. 546 | - [Dockerfile Linter action](https://github.com/buddy-works/dockerfile-linter) - The linter lets you verify Dockerfile syntax to make sure it follows the best practices for building efficient Docker images. 547 | - [dockfmt](https://github.com/jessfraz/dockfmt) :construction: - Dockerfile formatter and parser by [@jessfraz][jessfraz] 548 | - [FROM:latest](https://github.com/replicatedhq/dockerfilelint) - An opinionated Dockerfile linter by [@replicatedhq](https://github.com/replicatedhq) 549 | - [Hadolint](https://github.com/hadolint/hadolint) - A Dockerfile linter that checks for best practices, common mistakes, and is also able to lint any bash written in `RUN` instructions; by [@lukasmartinelli](https://github.com/lukasmartinelli) 550 | - [Whale-linter](https://github.com/jeromepin/whale-linter) - :skull: A simple and small Dockerfile linter written in Python3+ without dependencies by [@jeromepin](https://github.com/jeromepin) 551 | 552 | ### Metadata 553 | 554 | - [opencontainer](https://github.com/opencontainers/image-spec/blob/master/annotations.md) - A convention and shared namespace for Docker labels defined by OCI Image Spec. 555 | 556 | ### Registry 557 | 558 | Services to securely store your Docker images. 559 | 560 | - [Amazon Elastic Container Registry :heavy_dollar_sign:](https://aws.amazon.com/ecr/) - Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images. 561 | - [Azure Container Registry :heavy_dollar_sign:](https://azure.microsoft.com/en-us/products/container-registry/#overview) - Manage a Docker private registry as a first-class Azure resource 562 | - [CargoOS](https://github.com/RedCoolBeans/cargos-buildroot) - A bare essential OS for running the Docker Engine on bare metal or Cloud. By [@RedCoolBeans](https://github.com/RedCoolBeans) 563 | - [cleanreg](https://github.com/hcguersoy/cleanreg) - A small tool to delete image manifests from a Docker Registry implementing the API v2, dereferencing them for the GC by [@hcguersoy](https://github.com/hcguersoy) 564 | - [Cloudsmith :heavy_dollar_sign:](https://cloudsmith.com/product/formats/docker-registry) - A fully managed package management SaaS, with first-class support for public and private Docker registries (and many others, incl. Helm charts for the Kubernetes ecosystem). Has a generous free-tier and is also completely free for open-source. 565 | - [Container Registry Service :heavy_dollar_sign:](https://container-registry.com/) - Harbor based Container Management Solution as a Service for teams and organizations. Free tier offers 1 GB storage for private repositories. 566 | - [Cycle.io :heavy_dollar_sign:](https://cycle.io/) - Bare-metal container hosting. 567 | - [DigitalOcean :heavy_dollar_sign:](https://www.digitalocean.com/products/container-registry) - DigitalOcean Container Registry. 568 | - [Docker Hub](https://hub.docker.com/) provided by Docker Inc. 569 | - [Docker Registry v2][distribution] - The Docker toolset to pack, ship, store, and deliver content 570 | - [Docket](https://github.com/netvarun/docket) - Custom docker registry that allows for lightning fast deploys through bittorrent by [@netvarun](https://github.com/netvarun/) 571 | - [Dragonfly](https://github.com/dragonflyoss/Dragonfly2) - Provide efficient, stable and secure file distribution and image acceleration based on p2p technology. 572 | - [GCP Artifact Registry :heavy_dollar_sign:](https://cloud.google.com/artifact-registry/docs) Fast, private Docker image storage on Google Cloud Platform. 573 | - [Gitea Container Registry](https://docs.gitea.com/usage/packages/container) - Integrated Docker registry in Gitea, ideal for private, small-scale image hosting. 574 | - [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry) - GitHub's solution for storing and managing Docker images, with tight integration into GitHub Actions. 575 | - [GitLab Container Registry](https://docs.gitlab.com/ee/user/packages/container_registry/) - Registry focused on using its images in GitLab CI 576 | - [Harbor](https://github.com/goharbor/harbor) An open source trusted cloud native registry project that stores, signs, and scans content. Supports replication, user management, access control and activity auditing. By [CNCF](https://www.cncf.io) formerly [VMWare][vmware] 577 | - [JFrog Artifactory :heavy_dollar_sign:](https://jfrog.com/artifactory/) - Artifact Repository Manager, can be used as private Docker Registry as well 578 | - [Kraken](https://github.com/uber/kraken) - Uber's Highly scalable P2P docker registry, capable of distributing TBs of data in seconds. 579 | - [Quay.io :heavy_dollar_sign:](https://quay.io/) (part of CoreOS) - Secure hosting for private Docker repositories 580 | - [Registryo](https://github.com/inmagik/registryo) - UI and token based authentication server for onpremise docker registry 581 | - [Rescoyl](https://github.com/noteed/rescoyl) - Private Docker registry (free and open source) by [@noteed](https://github.com/noteed) 582 | - [Sonatype Nexus Repository](https://www.sonatype.com/products/sonatype-nexus-repository) - Manage binaries and build artifacts across your software supply chain. 583 | 584 | ## Development with Docker 585 | 586 | ### API Client 587 | 588 | - [ahab](https://github.com/instacart/ahab) - Docker event handling with Python by [@instacart](https://github.com/instacart) 589 | - [clj-docker-client](https://github.com/into-docker/clj-docker-client) :skull: - Idiomatic Clojure client for the Docker remote API. By [@lispyclouds][lispyclouds] 590 | - [contajners](https://github.com/lispyclouds/contajners) - An idiomatic, data-driven, REPL friendly Clojure client for OCI container engines. By [@lispyclouds][lispyclouds] 591 | - [Docker Client for JVM](https://github.com/gesellix/docker-client) - A Docker remote api client library for the JVM, written in Groovy by [@gesellix][gesellix] 592 | - [Docker Client TypeScript](https://gitlab.com/masaeedu/docker-client) - Docker API client for JavaScript, automatically generated from Swagger API definition from moby repository. By [@masaeedu](https://github.com/masaeedu) 593 | - [docker-client](https://github.com/spotify/docker-client) :skull: - Java client for the Docker remote API. By [@spotify][spotify] 594 | - [docker-controller-bot](https://github.com/dgongut/docker-controller-bot) - Telegram bot to control docker containers. By [@dgongut](https://github.com/dgongut/) 595 | - [docker-it-scala](https://github.com/whisklabs/docker-it-scala) - Docker integration testing kit with Scala by [@whisklabs](https://github.com/whisklabs) 596 | - [docker-java-api](https://github.com/amihaiemil/docker-java-api) - Lightweight, truly object-oriented, Java client for Docker's API. By [@amihaiemil](https://github.com/amihaiemil) 597 | - [docker-maven-plugin](https://github.com/fabric8io/docker-maven-plugin) - A Maven plugin for running and creating Docker images by [@fabric8io](https://github.com/fabric8io) 598 | - [Docker-PowerShell](https://github.com/Microsoft/Docker-PowerShell) - :skull: PowerShell Module for Docker 599 | - [Docker.DotNet](https://github.com/Microsoft/Docker.DotNet) - C#/.NET HTTP client for the Docker remote API by [@ahmetb](https://github.com/ahmetb) 600 | - [Docker.Registry.DotNet](https://github.com/ChangemakerStudios/Docker.Registry.DotNet) - .NET (C#) Client Library for interacting with a Docker Registry API (v2) [@rquackenbush](https://github.com/rquackenbush) 601 | - [dockerfile-maven](https://github.com/spotify/dockerfile-maven) - :skull: A Maven plugin for building and pushing Docker images by [@spotify][spotify] 602 | - [dockerode](https://github.com/apocas/dockerode) - Docker Remote API node.js module by [@apocas](https://github.com/apocas) 603 | - [DoMonit](https://github.com/eon01/DoMonit) - A simple Docker Monitoring wrapper For Docker API 604 | - [go-dockerclient](https://github.com/fsouza/go-dockerclient/) - Go HTTP client for the Docker remote API by [@fsouza](https://github.com/fsouza/) 605 | - [Gradle Docker plugin](https://github.com/gesellix/gradle-docker-plugin) - A Docker remote api plugin for Gradle by [@gesellix][gesellix] 606 | - [libcompose](https://github.com/docker/libcompose) - :skull: Go library for Docker Compose. 607 | - [Portainer stack utils](https://github.com/greenled/portainer-stack-utils) :construction: - Bash script to deploy/update/undeploy Docker stacks in a Portainer instance from a docker-compose yaml file. By [@greenled](https://github.com/greenled). 608 | - [sbt-docker-compose](https://github.com/Tapad/sbt-docker-compose) - :skull: Integrates Docker Compose functionality into sbt by [@kurtkopchik](https://github.com/kurtkopchik/) 609 | - [sbt-docker](https://github.com/marcuslonnberg/sbt-docker) - Create Docker images directly from sbt by [@marcuslonnberg](https://github.com/marcuslonnberg) 610 | 611 | ### CI/CD 612 | 613 | - [Buddy :heavy_dollar_sign:](https://buddy.works) - The best of Git, build & deployment tools combined into one powerful tool that supercharged our development. 614 | - [Captain](https://github.com/harbur/captain) - Convert your Git workflow to Docker containers ready for Continuous Delivery by [@harbur](https://github.com/harbur). 615 | - [Cyclone](https://github.com/caicloud/cyclone) - Powerful workflow engine and end-to-end pipeline solutions implemented with native Kubernetes resources by [@caicloud](https://github.com/caicloud). 616 | - [Depot :heavy_dollar_sign:](https://depot.dev) - Build Docker images fast, in the cloud. Blazing fast compute, automatic intelligent caching, and zero configuration. [Done in seconds](https://depot.dev/#benchmarks). 617 | - [Diun](https://github.com/crazy-max/diun) - Receive notifications when an image or repository is updated on a Docker registry by [@crazy-max]. 618 | - [dockcheck](https://github.com/mag37/dockcheck) - A script checking updates for docker images without pulling then auto-update selected/all containers. With notifications, pruning and more. 619 | - [Docker plugin for Jenkins](https://github.com/jenkinsci/docker-plugin/) - The aim of the docker plugin is to be able to use a docker host to dynamically provision a slave, run a single build, then tear-down that slave. 620 | - [Drone](https://github.com/drone/drone) - Continuous integration server built on Docker and configured using YAML files. 621 | - [Gantry](https://github.com/shizunge/gantry) - Automatically update selected Docker swarm services. 622 | - [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner) - GitLab has integrated CI to test, build and deploy your code with the use of GitLab runners. 623 | - [GOCD-Docker](https://github.com/gocd/gocd-docker) :skull: - Go Server and Agent in docker containers to provision. 624 | - [Jaypore CI](https://github.com/theSage21/jaypore_ci) - Simple, very flexible, powerful CI / CD / automation system configured in Python. Offline and local first. 625 | - [Kraken CI](https://github.com/Kraken-CI/kraken) - Modern CI/CD, open-source, on-premise system that is highly scalable and focused on testing. One of its executors is Docker. Developed by [@Kraken-CI](https://github.com/Kraken-CI). 626 | - [Microservices Continuous Deployment](https://github.com/francescou/docker-continuous-deployment) - Continuous deployment of a microservices application. 627 | - [mu](https://github.com/stelligent/mu) - Tool to configure CI/CD of your container applications via AWS CodePipeline, CodeBuild and ECS [@Stelligent](https://github.com/stelligent) 628 | - [Ouroboros](https://github.com/pyouroboros/ouroboros) :skull: - Automatically update running Docker containers with notifications 629 | - [Popper](https://github.com/systemslab/popper) - Github actions workflow (HCL syntax) execution engine. 630 | - [Screwdriver :heavy_dollar_sign:](https://screwdriver.cd/) - Yahoo's OpenSource buildplatform designed for Continous Delivery. 631 | - [Skipper](https://github.com/Stratoscale/skipper) - Easily dockerize your Git repository by [@Stratoscale](https://github.com/Stratoscale) 632 | - [SwarmCI](https://github.com/ghostsquad/swarmci) - Create a distributed, isolated task pipeline in your Docker Swarm. 633 | - [Tekton CD](https://tekton.dev/) - A cloud-native pipeline resource. 634 | - [Watchtower](https://github.com/containrrr/watchtower) - Automatically update running Docker containers 635 | 636 | ### Development Environment 637 | 638 | - [batect](https://github.com/batect/batect) - :skull: build and testing environments as code tool: Dockerised build and testing environments made easy by [@charleskorn](https://github.com/charleskorn) 639 | - [Binci](https://github.com/binci/binci) - Containerize your development workflow. (formerly DevLab by [@TechnologyAdvice](https://github.com/TechnologyAdvice)) 640 | - [Boot2Docker](https://github.com/boot2docker/boot2docker) :skull: - Docker for OSX and Windows 641 | - [coder](https://github.com/coder/coder) - remote development machines powered by Terraform or Docker by [@coder](https://github.com/coder) 642 | - [construi](https://github.com/lstephen/construi) - Run your builds inside a Docker defined environment by [@lstephen](https://github.com/lstephen) 643 | - [Crashcart](https://github.com/oracle/crashcart) - :skull: Sideload Linux binaries into a running container for troubleshooting by [@Oracle][oracle] 644 | - [dde](https://github.com/whatwedo/dde) :construction: - Local development environment toolset based on Docker. By [@whatwedo](https://github.com/whatwedo) 645 | - [Devstep](https://github.com/fgrehm/devstep) :skull: - Development environments powered by Docker and buildpacks by [@fgrehm][fgrehm] 646 | - [Dinghy](https://github.com/codekitchen/dinghy) - :skull: An alternative way to use Docker on Mac OS X using Docker Machine with virtualbox, vmware, xhyve or parallels 647 | - [DIP](https://github.com/bibendi/dip) - CLI utility for straightforward provisioning and interacting with an application configured by docker-compose. By [@bibendi](https://github.com/bibendi) 648 | - [DLite](https://github.com/nlf/dlite) :skull: - Simplest way to use Docker on OSX, no VM needed. By [@nlf](https://github.com/nlf) 649 | - [dobi](https://github.com/dnephin/dobi) - A build automation tool for Docker applications. By [@dnephin](https://github.com/dnephin) 650 | - [Docker Missing Tools](https://github.com/nandoquintana/docker-missing-tools) - A set of bash commands to shortcut typical docker dev-ops. An alternative to creating typical helper scripts like "build.sh" and "deploy.sh" inside code repositories. By [@NandoQuintana](https://github.com/nandoquintana). 651 | - [Docker osx dev](https://github.com/brikis98/docker-osx-dev) :skull: - A productive development environment with Docker on OS X by [@brikis98](https://github.com/brikis98) 652 | - [Docker-Arch](https://github.com/Ph3nol/Docker-Arch) - Generate Web/CLI projects Dockerized development environments, from 1 simple YAML file. By [@Ph3nol](https://github.com/ph3nol) 653 | - [Docker-sync](https://github.com/EugenMayer/docker-sync) - Drastically improves performance ([50-70x](https://github.com/EugenMayer/docker-sync/wiki/4.-Performance)) when using Docker for development on Mac OS X/Windows and Linux while sharing code to the container. By [@EugenMayer](https://github.com/EugenMayer) 654 | - [docker-vm](https://github.com/shyiko/docker-vm) - Simple and transparent alternative to boot2docker (backed by Vagrant) by [@shyiko](https://github.com/shyiko) 655 | - [DockerBuildManagement](https://github.com/DIPSAS/DockerBuildManagement) - :skull: Build Management is a python application, installed with pip. The application makes it easy to manage a build system based on Docker by configuring a single yaml file describing how to build, test, run or publish a containerized solution. 656 | - [DockerDL](https://github.com/matifali/dockerdl) - Deep Learning Docker Images. Don't waste time setting up a deep learning env when you can get a deep learning environment with everything pre-installed. 657 | - [Dusty](https://github.com/gamechanger/dusty) - :skull: Managed Docker development environments on OS X 658 | - [Eclipse Che](https://github.com/eclipse/che) - Developer workspace server with Docker runtimes, cloud IDE, next-generation Eclipse IDE 659 | - [EnvCLI](https://github.com/EnvCLI/EnvCLI) - Replace your local installation of Node, Go, ... with project-specific docker containers. By [@EnvCLI](https://github.com/EnvCLI) 660 | - [ESP32 Linux - Docker builder](https://github.com/hpsaturn/esp32s3-linux) - Container solution to compile Linux and develop it for ESP32 microcontrollers - By [@Hpsaturn](https://github.com/hpsaturn) 661 | - [footloose](https://github.com/weaveworks/footloose) - :skull: Spin containers that look like Virtual Machines - By [@dlespiau](https://github.com/dlespiau) 662 | - [forward2docker](https://github.com/bsideup/forward2docker) :skull: - Utility to auto forward a port from localhost into ports on Docker containers running in a boot2docker VM by [@bsideup](https://github.com/bsideup) 663 | - [Gebug](https://github.com/moshebe/gebug) - A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly. 664 | - [Kitt](https://github.com/senges/kitt) - A portable and disposable Shell environment, based on Docker and Nix. By [@senges](https://github.com/senges) 665 | - [Lando](https://github.com/lando/lando) - Lando is for developers who want to quickly specify and painlessly spin up the services and tools needed to develop their projects. By [Tandem](https://thinktandem.io/) 666 | - [Rust Universal Compiler](https://github.com/Peco602/rust-universal-compiler) - Container solution to compile Rust projects for Linux, macOS and Windows. By [@Peco602][peco602] 667 | - [uniget](https://github.com/uniget-org/cli) - uni(versal)get, the installer and updater for container tools and beyond (formerly docker-setup). By [@nicholasdille](https://github.com/nicholasdille) 668 | - [Vagga](https://github.com/tailhook/vagga) - Vagga is a containerisation tool without daemons. It is a fully-userspace container engine inspired by Vagrant and Docker, specialized for development environments by [@tailhook](https://github.com/tailhook/) 669 | - [Zsh-in-Docker](https://github.com/deluan/zsh-in-docker) - Install Zsh, Oh-My-Zsh and plugins inside a Docker container with one line! By [Deluan](https://www.deluan.com) 670 | 671 | ### Garbage Collection 672 | 673 | - [caduc](https://github.com/tjamet/caduc) - A docker garbage collector cleaning stuff you did not use recently 674 | - [Docker Clean](https://github.com/ZZROTDesign/docker-clean) - A script that cleans Docker containers, images and volumes by [@zzrotdesign](https://github.com/ZZROTDesign) 675 | - [docker_gc](https://github.com/pdacity/docker_gc) - Image for automatic removing unused Docker Swarm objects. Also works just as Docker Service by [@pdacity](https://github.com/pdacity) 676 | - [Docker-cleanup](https://github.com/meltwater/docker-cleanup) :skull: - Automatic Docker image, container and volume cleanup by [@meltwater](https://github.com/meltwater) 677 | - [docker-custodian](https://github.com/Yelp/docker-custodian) - Keep docker hosts tidy. By [@Yelp](https://github.com/Yelp) 678 | - [docker-garby](https://github.com/konstruktoid/docker-garby) - :skull: Docker garbage collection script by [@konstruktoid](https://github.com/konstruktoid). 679 | - [docker-gc](https://github.com/spotify/docker-gc) :skull: - A cron job that will delete old stopped containers and unused images by [@spotify][spotify] 680 | - [Docuum](https://github.com/stepchowfun/docuum) - Least recently used (LRU) eviction of Docker images by [@stepchowfun](https://github.com/stepchowfun) 681 | - [sherdock](https://github.com/rancher/sherdock) :skull: - Automatic GC of images based on regexp by [@rancher][rancher] 682 | 683 | ### Serverless 684 | 685 | - [AMP](https://github.com/appcelerator-archive/amp) :skull: - The open source unified CaaS/FaaS platform for Docker, batteries included. By [@Appcelerator](https://github.com/appcelerator-archive) 686 | - [Apache OpenWhisk](https://github.com/apache/openwhisk) - a serverless, open source cloud platform that executes functions in response to events at any scale. By [@apache](https://github.com/apache) 687 | - [Docker-Lambda](https://github.com/lambci/docker-lambda) - :skull: Docker images and test runners that replicate the live AWS Lambda environment. By [@lamb-ci](https://github.com/lambci) 688 | - [Funker](https://github.com/bfirsh/funker-example-voting-app) - Functions as Docker containers example voting app. By [@bfirsh](https://github.com/bfirsh) 689 | - [IronFunctions](https://github.com/iron-io/functions) - The serverless microservices platform FaaS (Functions as a Service) which uses Docker containers to run Any language or AWS Lambda functions 690 | - [Koyeb](https://www.koyeb.com/) :heavy_dollar_sign: - Koyeb is a developer-friendly serverless platform to deploy apps globally. Seamlessly run Docker containers, web apps, and APIs with git-based deployment, native autoscaling, a global edge network, and built-in service mesh and discovery. 691 | - [OpenFaaS](https://github.com/openfaas/faas) - A complete serverless functions framework for Docker and Kubernetes. By [OpenFaaS](https://github.com/openfaas) 692 | - [SCAR](https://github.com/grycap/scar) - Serverless Container-aware Architectures (SCAR) is a serverless framework that allows easy deployment and execution of containers (e.g. Docker) in Serverless environments (e.g. Lambda) by [@grycap](https://github.com/grycap) 693 | 694 | ### Testing 695 | 696 | - [Container Structure Test](https://github.com/GoogleContainerTools/container-structure-test) - A framework to validate the structure of an image by checking the outputs of commands or the contents of the filesystem. By [@GoogleContainerTools][googlecontainertools] 697 | - [dgoss](https://github.com/aelsabbahy/goss/tree/master/extras/dgoss) - A fast YAML based tool for validating docker containers. 698 | - [DockerSpec](https://github.com/zuazo/dockerspec) - A small Ruby Gem to run RSpec and Serverspec, Infrataster and Capybara tests against Dockerfiles or Docker images easily. By [@zuazo](https://github.com/zuazo) 699 | - [Dockunit](https://github.com/dockunit/platform) :skull: - Docker based integration tests. A simple Node based utility for running Docker based unit tests. By [@dockunit](https://github.com/dockunit) 700 | - [EZDC](https://github.com/lynchborg/ezdc) - Golang test harness for easily setting up tests that rely on services in a docker-compose.yml. By [@byrnedo] 701 | - [InSpec][inspec] - InSpec is an open-source testing framework for infrastructure with a human- and machine-readable language for specifying compliance, security and policy requirements. By [@chef](https://github.com/chef) 702 | - [Kurtosis](https://github.com/kurtosis-tech/kurtosis) - A composable build system for multi-container test environments that provides developers with: a powerful Python-like SDK for environment configuration, a compile-time validator to verify environment behavior & setup, and a runtime for environment execution, monitoring, & debugging capabilities. By [Kurtosis](https://www.kurtosis.com/) 703 | - [Pull Dog](https://github.com/apps/pull-dog) - A GitHub app that automatically creates Docker-based test environments for your pull requests, from your docker-compose files. Not open source. 704 | - [Pumba](https://github.com/alexei-led/pumba) - Chaos testing tool for Docker. Can be deployed on kubernetes and CoreOS cluster. By [@alexei-led](https://github.com/alexei-led) 705 | 706 | ### Wrappers 707 | 708 | - [Ansible](https://docs.ansible.com/ansible/latest/collections/community/general/docker_container_module.html) - Manage the life cycle of Docker containers. By RedHat 709 | - [Azk](https://github.com/azukiapp/azk) - :skull: Orchestrate development environments on your local machine by [@azukiapp](https://github.com/azukiapp) 710 | - [Beluga](https://github.com/cortexmedia/Beluga) :skull: - CLI to deploy docker containers on a single server or low amount of servers. By [@cortextmedia](https://github.com/cortexmedia) 711 | - [dexec](https://github.com/docker-exec/dexec) - Command line interface written in Go for running code with Docker Exec images. 712 | - [dockerized](https://github.com/benzaita/dockerized-cli) - Seamlessly execute commands in a container. 713 | - [Dray](https://github.com/CenturyLinkLabs/dray) - An engine for managing the execution of container-based workflows by [@CenturyLinkLabs][centurylinklabs] 714 | - [FuGu](https://github.com/mattes/fugu) :skull: - Docker run wrapper without orchestration by [@mattes](https://github.com/mattes) 715 | - [Hokusai](https://github.com/artsy/hokusai) - A Docker + Kubernetes CLI for application developers; used to containerize an application and to manage its lifecycle throughout development, testing, and release cycles. From [@artsy](https://github.com/artsy) 716 | - [Preevy](https://github.com/livecycle/preevy) - Preview environments for Docker and Docker Compose projects. Test your changes and get feedback from devs and non-devs (Product/Design) by deploying pull requests to the your cloud provider as part of your CI pipeline. 717 | - [Shutit](https://github.com/ianmiell/shutit) - Tool for building and maintaining complex Docker deployments by [@ianmiell](https://github.com/ianmiell) 718 | - [subuser](https://github.com/subuser-security/subuser) - Makes it easy to securely and portably run graphical desktop applications in Docker 719 | - [T.A.D.S. boilerplate](https://github.com/Thomvaill/tads-boilerplate) - :skull: The power of Ansible and Terraform + the simplicity of Docker Swarm = Infrastructure as Code and DevOps best practices. By [@Thomvaill](https://github.com/Thomvaill) 720 | - [Terraform cloud-init config](https://github.com/christippett/terraform-cloudinit-container-server) - Terraform module for deploying a single Docker image or `docker-compose.yaml` file to any Cloud™ VM 721 | - [Turbo](https://github.com/ramitsurana/turbo) - Simple and Powerful utility for docker. By [@ramitsurana][ramitsurana] 722 | - [udocker](https://github.com/indigo-dc/udocker) - A tool to execute simple docker containers in batch or interactive systems without root privileges by [@inidigo-dc](https://github.com/indigo-dc) 723 | - [Vagrant - Docker provider](https://developer.hashicorp.com/vagrant/docs/providers/docker/basics) - Good starting point is [vagrant-docker-example](https://github.com/bubenkoff/vagrant-docker-example) by [@bubenkoff](https://github.com/bubenkoff) 724 | 725 | ## Services based on Docker (mostly :heavy_dollar_sign:) 726 | 727 | ### CI Services 728 | 729 | - [CircleCI](https://circleci.com/) :heavy_dollar_sign: - Push or pull Docker images from your build environment, or build and run containers right on CircleCI. 730 | - [CodeFresh](https://codefresh.io) :heavy_dollar_sign: - Everything you need to build, test, and share your Docker applications. Provides automated end to end testing. 731 | - [CodeShip](https://www.cloudbees.com/products/codeship) :heavy_dollar_sign: - Work with your established Docker workflows while automating your testing and deployment tasks with our hosted platform dedicated to speed and security. 732 | - [ConcourseCI](https://concourse-ci.org) :heavy_dollar_sign: - A CI SaaS platform for developers and DevOps teams pipeline oriented. 733 | - [Semaphore CI](https://semaphoreci.com/) :heavy_dollar_sign: — A high-performance cloud solution that makes it easy to build, test and ship your containers to production. 734 | - [TravisCI](https://www.travis-ci.com/) :heavy_dollar_sign: - A Free github projects continuous integration Saas platform for developers and Devops. 735 | 736 | ### CaaS 737 | 738 | - [Amazon ECS](https://aws.amazon.com/ecs/) :heavy_dollar_sign: - A management service on EC2 that supports Docker containers. 739 | - [Appfleet](https://appfleet.com/) :heavy_dollar_sign: - Edge platform to deploy and manage containerized services globally. The system will route the traffic to the closest location for lower latency. 740 | - [Azure AKS](https://azure.microsoft.com/en-us/products/kubernetes-service/) :heavy_dollar_sign: - Simplify Kubernetes management, deployment, and operations. Use a fully managed Kubernetes container orchestration service. 741 | - [Cloud 66](https://www.cloud66.com) :heavy_dollar_sign: - Full-stack hosted container management as a service 742 | - [Giant Swarm](https://www.giantswarm.io/) :heavy_dollar_sign: - Simple microservice infrastructure. Deploy your containers in seconds. 743 | - [Google Container Engine](https://cloud.google.com/kubernetes-engine/docs/) :heavy_dollar_sign: - Docker containers on Google Cloud Computing powered by [Kubernetes][kubernetes]. 744 | - [Mesosphere DC/OS Platform](https://d2iq.com/products/dcos) :heavy_dollar_sign: - Integrated platform for data and containers built on Apache Mesos by [@mesosphere](https://d2iq.com) 745 | - [Red Hat CodeReady Workspaces](https://developers.redhat.com/products/openshift-dev-spaces/overview) - A collaborative Kubernetes-native solution for rapid application development that delivers consistent developer environments on Red Hat OpenShift to allow anyone with a browser to contribute code in under two minutes. 746 | - [Red Hat OpenShift Dedicated](https://www.redhat.com/en/technologies/cloud-computing/openshift/dedicated) :heavy_dollar_sign: - Fully-managed Red Hat® OpenShift® service on Amazon Web Services and Google Cloud 747 | - [Triton](https://www.joyent.com/) :heavy_dollar_sign: - Elastic container-native infrastructure by Joyent. 748 | - [Virtuozzo Application Platform](https://www.virtuozzo.com/application-platform-partners/) :heavy_dollar_sign: - Deploy and manage your projects with turnkey PaaS across a wide network of reliable service providers 749 | 750 | ### Monitoring Services 751 | 752 | - [AppDynamics](https://github.com/Appdynamics/docker-monitoring-extension) - Docker Monitoring extension gathers metrics from the Docker Remote API, either using Unix Socket or TCP. 753 | - [Better Stack](https://betterstack.com/community/guides/scaling-docker/) :heavy_dollar_sign: - A Docker-compatible observability stack that delivers robust log aggregation and uptime monitoring capabilities for various software application. 754 | - [Broadcom Docker Monitoring](https://www.broadcom.com/info/aiops/docker-monitoring) :heavy_dollar_sign: - Agile Operations solutions from Broadcom deliver the modern Docker monitoring businesses need to accelerate and optimize the performance of microservices and the dynamic Docker environments running them. Monitor both the Docker environment and apps that run inside them. (former CA Technologies) 755 | - [Collecting docker logs and stats with Splunk](https://www.splunk.com/en_us/blog/tips-and-tricks/collecting-docker-logs-and-stats-with-splunk.html) 756 | - [Datadog](https://www.datadoghq.com/) :heavy_dollar_sign: - Datadog is a full-stack monitoring service for large-scale cloud environments that aggregates metrics/events from servers, databases, and applications. It includes support for Docker, Kubernetes, and Mesos. 757 | - [Prometheus](https://prometheus.io/) :heavy_dollar_sign: - Open-source service monitoring system and time series database 758 | - [Site24x7](https://www.site24x7.com/docker-monitoring.html) :heavy_dollar_sign: - Docker Monitoring for DevOps and IT is a SaaS Pay per Host model 759 | - [SPM for Docker](https://github.com/sematext/sematext-agent-docker) :heavy_dollar_sign: - Monitoring of host and container metrics, Docker events and logs. Automatic log parser. Anomaly Detection and alerting for metrics and logs. [@sematext](https://github.com/sematext) 760 | - [Sysdig Monitor](https://sysdig.com/products/monitor/) :heavy_dollar_sign: - Sysdig Monitor can be used as either software or a SaaS service to monitor, alert, and troubleshoot containers using system calls. It has container-specific features for Docker and Kubernetes. 761 | 762 | # Useful Resources 763 | 764 | - **[Valuable Docker Links](http://nane.kratzke.pages.mylab.th-luebeck.de/about/blog/2014/08/24/valuable-docker-links/)** High quality articles about docker! **MUST SEE** 765 | - [Become a Docker Power User with Visual Studio Code](https://www.thebyte.io/become-docker-power-user-with-vs-code) - :heavy_dollar_sign: A training course to help you become a Docker Power user with Visual Studio Code 766 | - [Cloud Native Landscape](https://github.com/cncf/landscape) 767 | - [Docker Blog](https://www.docker.com/blog/) - regular updates about Docker, the community and tools 768 | - [Docker Certification](https://intellipaat.com/docker-training-course/?US) :heavy_dollar_sign: will help you to will Learn Docker containerization, running Docker containers, Image creation, Dockerfile, Docker orchestration, security best practices, and more through hands-on projects and case studies and helps to clear Docker Certified Associate. 769 | - [Docker Community on Hashnode](https://hashnode.com/n/docker) 770 | - [Docker dev bookmarks](https://www.codever.dev/search?q=docker) - use the tag [docker](https://www.codever.dev/bookmarks/t/docker) 771 | - [Docker in Action, Second Edition](https://www.manning.com/books/docker-in-action-second-edition) 772 | - [Docker in Practice, Second Edition](https://www.manning.com/books/docker-in-practice-second-edition) 773 | - [Docker packaging guide for Python](https://pythonspeed.com/docker/) - a series of detailed articles on the specifics of Docker packaging for Python. 774 | - [Learn Docker in a Month of Lunches](https://www.manning.com/books/learn-docker-in-a-month-of-lunches) 775 | - [Learn Docker](https://coursesity.com/blog/best-docker-tutorials/) - Learn Docker - curated list of the top online docker tutorials and courses. 776 | - [Programming Community Curated Resources for learning Docker](https://hackr.io/tutorials/learn-docker) 777 | 778 | ## Awesome Lists 779 | 780 | - [Awesome CI/CD](https://github.com/cicdops/awesome-ciandcd) - Not specific to docker but relevant. 781 | - [Awesome Compose](https://github.com/docker/awesome-compose) - Docker Compose samples 782 | - [Awesome Kubernetes](https://github.com/ramitsurana/awesome-kubernetes) by [@ramitsurana][ramitsurana] 783 | - [Awesome Linux Container](https://github.com/Friz-zy/awesome-linux-containers) more general about container than this repo, by [@Friz-zy](https://github.com/Friz-zy). 784 | - [Awesome Selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) list of Free Software network services and web applications which can be hosted locally by running in a classical way (setup local web server and run applications from there) or in a Docker container. By [@Kickball](https://github.com/Kickball) 785 | - [Awesome Sysadmin](https://github.com/n1trux/awesome-sysadmin) by [@n1trux](https://github.com/n1trux) 786 | - [ToolsOfTheTrade](https://github.com/cjbarber/ToolsOfTheTrade) a list of SaaS and On premise applications by [@cjbarber](https://github.com/cjbarber) 787 | 788 | ## Demos and Examples 789 | 790 | - [An Annotated Docker Config for Frontend Web Development](https://nystudio107.com/blog/an-annotated-docker-config-for-frontend-web-development) A local development environment with Docker allows you to shrink-wrap the devops your project needs as config, making onboarding frictionless. 791 | - [Local Docker DB](https://github.com/alexmacarthur/local-docker-db) a list of docker-compose samples for a lot of databases by [@alexmacarthur](https://github.com/alexmacarthur) 792 | - [Webstack-micro](https://github.com/ferbs/webstack-micro) Demo web app showing how Docker Compose might be used to set up an API Gateway, centralized authentication, background workers, and WebSockets as containerized services. 793 | 794 | ## Good Tips 795 | 796 | - [Docker Caveats](http://docker-saigon.github.io/post/Docker-Caveats/) What You Should Know About Running Docker In Production (written 11 APRIL 2016) **MUST SEE** 797 | - [Docker Containers on the Desktop](https://blog.jessfraz.com/post/docker-containers-on-the-desktop/) - The **funniest way** to learn about docker by [@jessfraz][jessfraz] who also gave a [presentation](https://www.youtube.com/watch?v=1qlLUf7KtAw) about it @ DockerCon 2015 798 | - [Docker vs. VMs? Combining Both for Cloud Portability Nirvana](https://www.flexera.com/blog/finops/docker-vs-vms-combining-both-for-cloud-portability-nirvana/) 799 | - [Dockerfile best practices](https://github.com/hexops/dockerfile) - This repository has best-practices for writing Dockerfiles 800 | - [Don't Repeat Yourself with Anchors, Aliases and Extensions in Docker Compose Files](https://medium.com/@kinghuang/docker-compose-anchors-aliases-extensions-a1e4105d70bd) by [@King Chung Huang](https://github.com/kinghuang) 801 | - [GUI Apps with Docker](http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/) by [@fgrehm][fgrehm] 802 | 803 | ## Raspberry Pi & ARM 804 | 805 | - [Docker Pirates ARMed with explosive stuff](https://blog.hypriot.com/) Huge resource on clustering, swarm, docker, pre-installed image for SD card on Raspberry Pi 806 | - [Get Docker up and running on the RaspberryPi in three steps](https://github.com/umiddelb/armhf/wiki/Get-Docker-up-and-running-on-the-RaspberryPi-%28ARMv6%29-in-three-steps) 807 | - [git push docker containers to linux devices](https://www.balena.io) Modern DevOps for IoT, leveraging git and Docker. 808 | - [Installing, running, using Docker on armhf (ARMv7) devices](https://github.com/umiddelb/armhf/wiki/Installing,-running,-using-docker-on-armhf-%28ARMv7%29-devices) 809 | 810 | ## Security 811 | 812 | - [Bringing new security features to Docker](https://opensource.com/business/14/9/security-for-docker) 813 | - [CVE Scanning Alpine images with Multi-stage builds in Docker 17.05](https://github.com/tomwillfixit/alpine-cvecheck) by [@tomwillfixit](https://twitter.com/tomwillfixit) 814 | - [Docker Secure Deployment Guidelines](https://github.com/AonCyberLabs/Docker-Secure-Deployment-Guidelines) 815 | - [Docker Security - Quick Reference](https://binarymist.io/publication/docker-security/) 816 | - [Docker Security: Are Your Containers Tightly Secured to the Ship? SlideShare](https://www.slideshare.net/slideshow/docker-security-are-your-containers-tightly-secured-to-the-ship/43834790) 817 | - [How CVE's are handled on Offical Docker Images](https://github.com/docker-library/official-images/issues/1448) 818 | - [Lynis is an open source security auditing tool including Docker auditing](https://cisofy.com/lynis/) 819 | - [Security Best Practices for Building Docker Images](https://linux-audit.com/tags/docker/) 820 | - [Software Engineering Radio interview of Docker Security Team Lead (Diogo Mónica)](https://www.se-radio.net/2017/05/se-radio-episode-290-diogo-monica-on-docker-security/) 821 | - [Ten Docker Image Security Best Practices Cheat Sheet](https://snyk.io/blog/10-docker-image-security-best-practices/) 822 | - [Top ten most popular docker images each contain at least 30 vulnerabilities](https://snyk.io/blog/top-ten-most-popular-docker-images-each-contain-at-least-30-vulnerabilities/) 823 | - [Tuning Docker with the newest security enhancements](https://opensource.com/business/15/3/docker-security-tuning) 824 | - [10 best practices to containerize Node.js web applications with Docker](https://snyk.io/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker/) 825 | 826 | ## Videos 827 | 828 | - [Contributing to Docker by Andrew "Tianon" Page (InfoSiftr)](https://www.youtube.com/watch?v=1jwo8-1HYYg) (34:31) 829 | - [Deploying and scaling applications with Docker, Swarm, and a tiny bit of Python magic](https://www.youtube.com/watch?v=GpHMTR7P2Ms) (3:11:06) by [@jpetazzo][jpetazzo] 830 | - [Docker and SELinux by Daniel Walsh from Red Hat](https://www.youtube.com/watch?v=zWGFqMuEHdw) (40:23) 831 | - [Docker Course](https://www.youtube.com/watch?v=UZpyvK6UGFo) (Spanish) by [@pablokbs](https://github.com/pablokbs) 832 | - [Docker for Developers](https://www.youtube.com/watch?v=FdkNAjjO5yQ) (54:26) by [@jpetazzo][jpetazzo] <== Good introduction, context, demo 833 | - [Docker from scratch](https://www.youtube.com/playlist?list=PLLhEJK7fQIxD-btrjrqdEfQHbkZnQrmqE) (1:22:01) on YouTube by Paris Nakita Kejser 834 | - [Docker: How to Use Your Own Private Registry](https://www.youtube.com/watch?v=CAewZCBT4PI) (15:01) 835 | - [Docker in Production](https://www.youtube.com/watch?v=Glk5d5WP6MI) by [@jpetazzo][jpetazzo] (36:05) 836 | - [Docker Primer to Docker Compose](https://www.youtube.com/watch?v=G-s2GXGAjTk) (1:56:45) on YouTube by LoginRadius 837 | - [Docker Registry from scratch](https://www.youtube.com/playlist?list=PLLhEJK7fQIxAz3d4Fj3edq7UcxEhdTCBm) (44:40) on YouTube by Paris Nakita Kejser 838 | - [Docker Swarm from scratch](https://www.youtube.com/playlist?list=PLLhEJK7fQIxAY4gZd1Wl-GsLvg-e9Ap1e) (1:41:28) on YouTube by Paris Nakita Kejser 839 | - [Extending Docker with Plugins](https://vimeo.com/110835013) (15:21) 840 | - [From Local Docker Development to Production Deployments](https://www.youtube.com/watch?v=7CZFpHUPqXw) by [@jpetazzo][jpetazzo] @ AWS re:Invent 2015 841 | - [Immutable Infrastructure with Docker and EC2 by Michael Bryzek (Gilt)](https://www.youtube.com/watch?v=GaHzdqFithc) (42:04) 842 | - [Introduction to Docker and containers](https://www.youtube.com/watch?v=ZVaRK10HBjo) (3:09:00) by [@jpetazzo][jpetazzo] 843 | - [Logging on Docker: What You Need to Know](https://vimeo.com/123341629) (51:27) 844 | - [Performance Analysis of Docker - Jeremy Eder](https://www.youtube.com/watch?v=6f2E6PKYb0w) (1:36:58) 845 | - [Scalable Microservices with Kubernetes](https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615) Free Udacity course 846 | - [State of containers: a debate with CoreOS, VMware and Google](https://www.youtube.com/watch?v=IiITP3yIRd8) (27:38) 847 | 848 | # Communities and Meetups 849 | 850 | ## Brazilian 851 | 852 | - [Docker BR on Telegram](https://telegram.me/dockerbr) 853 | 854 | ## Chinese 855 | 856 | - [DockerOne](http://dockone.io/) Docker Community (in Chinese) by [@LiYingJie](http://dockone.io/people/%E6%9D%8E%E9%A2%96%E6%9D%B0) 857 | 858 | ## English 859 | 860 | - [Docker Community](https://www.docker.com/community/) 861 | - [Docker Events](https://www.docker.com/events/) 862 | - [Docker Online Meetup](https://www.meetup.com/en-AU/Docker-Online-Meetup/) 863 | - [Docker Reddit Community](https://www.reddit.com/r/docker/) 864 | 865 | ## Russian 866 | 867 | - [Docker Russian-speaking Community](https://t.me/docker_ru) 868 | 869 | ## Spanish 870 | 871 | - [Docker Tips](https://dockertips.com/) 872 | 873 | ## Stargazers over time 874 | 875 | [](https://starchart.cc/veggiemonk/awesome-docker) 876 | 877 | [contributing]: https://github.com/veggiemonk/awesome-docker/blob/master/.github/CONTRIBUTING.md 878 | [akito]: https://github.com/theAkito 879 | [calico]: https://github.com/projectcalico/calico 880 | [centurylinklabs]: https://github.com/CenturyLinkLabs 881 | [containx]: https://github.com/ContainX 882 | [containers]: https://github.com/containers 883 | [coreos]: https://github.com/coreos 884 | [deepfence]: https://github.com/deepfence 885 | [distribution]: https://github.com/docker/distribution 886 | [docker-flow]: https://github.com/docker-flow 887 | [docker-for-windows]: https://docs.docker.com/desktop/setup/install/windows-install/ 888 | [docker]: https://github.com/docker 889 | [editreadme]: https://github.com/veggiemonk/awesome-docker/edit/master/README.md 890 | [fgrehm]: https://github.com/fgrehm 891 | [gesellix]: https://github.com/gesellix 892 | [genuinetools]: https://github.com/genuinetools 893 | [gliderlabs]: https://github.com/gliderlabs 894 | [google]: https://github.com/google 895 | [googlecontainertools]: https://github.com/GoogleContainerTools 896 | [inspec]: https://github.com/inspec/inspec 897 | [jessfraz]: https://github.com/jessfraz 898 | [jpetazzo]: https://github.com/jpetazzo 899 | [jwilder]: https://github.com/jwilder 900 | [kubernetes]: https://kubernetes.io 901 | [lispyclouds]: https://github.com/lispyclouds 902 | [nvidia]: https://github.com/nvidia 903 | [nginxproxy]: https://github.com/nginx-proxy/nginx-proxy 904 | [openshift]: https://okd.io/ 905 | [oracle]: https://github.com/oracle 906 | [peco602]: https://github.com/Peco602 907 | [powerman]: https://github.com/powerman 908 | [progrium]: https://github.com/progrium 909 | [ramitsurana]: https://github.com/ramitsurana 910 | [rancher]: https://github.com/rancher 911 | [safe-waters]: https://github.com/safe-waters 912 | [sindresorhus]: https://github.com/sindresorhus/awesome 913 | [spotify]: https://github.com/spotify 914 | [tomastomecek]: https://github.com/TomasTomecek 915 | [vegasbrianc]: https://github.com/vegasbrianc 916 | [weave]: https://github.com/weaveworks/weave 917 | [vmware]: https://github.com/vmware 918 | [@byrnedo]: https://github.com/byrnedo 919 | [@crazy-max]: https://github.com/crazy-max 920 | [@grammarly]: https://github.com/grammarly 921 | [@skanehira]: https://github.com/skanehira 922 | -------------------------------------------------------------------------------- /badge.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra'); 2 | const cheerio = require('cheerio'); 3 | const showdown = require('showdown'); 4 | 5 | process.env.NODE_ENV = 'production'; 6 | 7 | const LOG = { 8 | error: (...args) => console.error('❌ ERROR', { ...args }), 9 | debug: (...args) => { 10 | if (process.env.DEBUG) console.log('💡 DEBUG: ', { ...args }); 11 | }, 12 | }; 13 | const handleFailure = (err) => { 14 | LOG.error(err); 15 | process.exit(1); 16 | }; 17 | 18 | process.on('unhandledRejection', handleFailure); 19 | 20 | // --- FILES 21 | const README = 'README.md'; 22 | const WEBSITE_FOLDER = 'website'; 23 | const indexTemplate = `${WEBSITE_FOLDER}/index.tmpl.html`; 24 | const indexDestination = `${WEBSITE_FOLDER}/index.html`; 25 | 26 | async function processIndex() { 27 | const converter = new showdown.Converter(); 28 | converter.setFlavor('github'); 29 | 30 | try { 31 | LOG.debug('Loading files...', { indexTemplate, README }); 32 | const template = await fs.readFile(indexTemplate, 'utf8'); 33 | const markdown = await fs.readFile(README, 'utf8'); 34 | 35 | LOG.debug('Merging files...'); 36 | const $ = cheerio.load(template); 37 | $('#md').append(converter.makeHtml(markdown)); 38 | 39 | LOG.debug('Writing index.html'); 40 | await fs.outputFile(indexDestination, $.html(), 'utf8'); 41 | LOG.debug('DONE 👍'); 42 | } catch (err) { 43 | handleFailure(err); 44 | } 45 | } 46 | 47 | async function main() { 48 | await processIndex(); 49 | } 50 | 51 | main(); 52 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |We moved to a new place, click here to be redirected.
12 | 13 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "awesome-docker-website", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "awesome-docker-website", 9 | "version": "1.0.0", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "cheerio": "1.0.0", 13 | "draftlog": "1.0.13", 14 | "fs-extra": "11.3.0", 15 | "node-fetch": "3.3.2", 16 | "rimraf": "6.0.1", 17 | "showdown": "^2.1.0" 18 | } 19 | }, 20 | "node_modules/@isaacs/cliui": { 21 | "version": "8.0.2", 22 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 23 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 24 | "dependencies": { 25 | "string-width": "^5.1.2", 26 | "string-width-cjs": "npm:string-width@^4.2.0", 27 | "strip-ansi": "^7.0.1", 28 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 29 | "wrap-ansi": "^8.1.0", 30 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 31 | }, 32 | "engines": { 33 | "node": ">=12" 34 | } 35 | }, 36 | "node_modules/@pkgjs/parseargs": { 37 | "version": "0.11.0", 38 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 39 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 40 | "optional": true, 41 | "engines": { 42 | "node": ">=14" 43 | } 44 | }, 45 | "node_modules/ansi-regex": { 46 | "version": "6.0.1", 47 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 48 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 49 | "engines": { 50 | "node": ">=12" 51 | }, 52 | "funding": { 53 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 54 | } 55 | }, 56 | "node_modules/ansi-styles": { 57 | "version": "6.2.1", 58 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 59 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 60 | "engines": { 61 | "node": ">=12" 62 | }, 63 | "funding": { 64 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 65 | } 66 | }, 67 | "node_modules/balanced-match": { 68 | "version": "1.0.2", 69 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 70 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 71 | }, 72 | "node_modules/boolbase": { 73 | "version": "1.0.0", 74 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 75 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 76 | }, 77 | "node_modules/brace-expansion": { 78 | "version": "2.0.1", 79 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 80 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 81 | "dependencies": { 82 | "balanced-match": "^1.0.0" 83 | } 84 | }, 85 | "node_modules/cheerio": { 86 | "version": "1.0.0", 87 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", 88 | "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", 89 | "dependencies": { 90 | "cheerio-select": "^2.1.0", 91 | "dom-serializer": "^2.0.0", 92 | "domhandler": "^5.0.3", 93 | "domutils": "^3.1.0", 94 | "encoding-sniffer": "^0.2.0", 95 | "htmlparser2": "^9.1.0", 96 | "parse5": "^7.1.2", 97 | "parse5-htmlparser2-tree-adapter": "^7.0.0", 98 | "parse5-parser-stream": "^7.1.2", 99 | "undici": "^6.19.5", 100 | "whatwg-mimetype": "^4.0.0" 101 | }, 102 | "engines": { 103 | "node": ">=18.17" 104 | }, 105 | "funding": { 106 | "url": "https://github.com/cheeriojs/cheerio?sponsor=1" 107 | } 108 | }, 109 | "node_modules/cheerio-select": { 110 | "version": "2.1.0", 111 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 112 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 113 | "dependencies": { 114 | "boolbase": "^1.0.0", 115 | "css-select": "^5.1.0", 116 | "css-what": "^6.1.0", 117 | "domelementtype": "^2.3.0", 118 | "domhandler": "^5.0.3", 119 | "domutils": "^3.0.1" 120 | }, 121 | "funding": { 122 | "url": "https://github.com/sponsors/fb55" 123 | } 124 | }, 125 | "node_modules/color-convert": { 126 | "version": "2.0.1", 127 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 128 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 129 | "dependencies": { 130 | "color-name": "~1.1.4" 131 | }, 132 | "engines": { 133 | "node": ">=7.0.0" 134 | } 135 | }, 136 | "node_modules/color-name": { 137 | "version": "1.1.4", 138 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 139 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 140 | }, 141 | "node_modules/commander": { 142 | "version": "9.0.0", 143 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", 144 | "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", 145 | "engines": { 146 | "node": "^12.20.0 || >=14" 147 | } 148 | }, 149 | "node_modules/cross-spawn": { 150 | "version": "7.0.6", 151 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 152 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 153 | "dependencies": { 154 | "path-key": "^3.1.0", 155 | "shebang-command": "^2.0.0", 156 | "which": "^2.0.1" 157 | }, 158 | "engines": { 159 | "node": ">= 8" 160 | } 161 | }, 162 | "node_modules/css-select": { 163 | "version": "5.1.0", 164 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 165 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 166 | "dependencies": { 167 | "boolbase": "^1.0.0", 168 | "css-what": "^6.1.0", 169 | "domhandler": "^5.0.2", 170 | "domutils": "^3.0.1", 171 | "nth-check": "^2.0.1" 172 | }, 173 | "funding": { 174 | "url": "https://github.com/sponsors/fb55" 175 | } 176 | }, 177 | "node_modules/css-what": { 178 | "version": "6.1.0", 179 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 180 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 181 | "engines": { 182 | "node": ">= 6" 183 | }, 184 | "funding": { 185 | "url": "https://github.com/sponsors/fb55" 186 | } 187 | }, 188 | "node_modules/data-uri-to-buffer": { 189 | "version": "4.0.0", 190 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 191 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", 192 | "engines": { 193 | "node": ">= 12" 194 | } 195 | }, 196 | "node_modules/dom-serializer": { 197 | "version": "2.0.0", 198 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 199 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 200 | "dependencies": { 201 | "domelementtype": "^2.3.0", 202 | "domhandler": "^5.0.2", 203 | "entities": "^4.2.0" 204 | }, 205 | "funding": { 206 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 207 | } 208 | }, 209 | "node_modules/domelementtype": { 210 | "version": "2.3.0", 211 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 212 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 213 | "funding": [ 214 | { 215 | "type": "github", 216 | "url": "https://github.com/sponsors/fb55" 217 | } 218 | ] 219 | }, 220 | "node_modules/domhandler": { 221 | "version": "5.0.3", 222 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 223 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 224 | "dependencies": { 225 | "domelementtype": "^2.3.0" 226 | }, 227 | "engines": { 228 | "node": ">= 4" 229 | }, 230 | "funding": { 231 | "url": "https://github.com/fb55/domhandler?sponsor=1" 232 | } 233 | }, 234 | "node_modules/domutils": { 235 | "version": "3.1.0", 236 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 237 | "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 238 | "dependencies": { 239 | "dom-serializer": "^2.0.0", 240 | "domelementtype": "^2.3.0", 241 | "domhandler": "^5.0.3" 242 | }, 243 | "funding": { 244 | "url": "https://github.com/fb55/domutils?sponsor=1" 245 | } 246 | }, 247 | "node_modules/draftlog": { 248 | "version": "1.0.13", 249 | "resolved": "https://registry.npmjs.org/draftlog/-/draftlog-1.0.13.tgz", 250 | "integrity": "sha512-GeMWOpXERBpfVDK6v7m0x1hPg8+g8ZsZWqJl2T17wHqrm4h8fnjiZmXcnCrmwogAc6R3YTxFXax15wezfuyCUw==" 251 | }, 252 | "node_modules/eastasianwidth": { 253 | "version": "0.2.0", 254 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 255 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 256 | }, 257 | "node_modules/emoji-regex": { 258 | "version": "9.2.2", 259 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 260 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 261 | }, 262 | "node_modules/encoding-sniffer": { 263 | "version": "0.2.0", 264 | "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", 265 | "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", 266 | "dependencies": { 267 | "iconv-lite": "^0.6.3", 268 | "whatwg-encoding": "^3.1.1" 269 | }, 270 | "funding": { 271 | "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" 272 | } 273 | }, 274 | "node_modules/entities": { 275 | "version": "4.5.0", 276 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 277 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 278 | "engines": { 279 | "node": ">=0.12" 280 | }, 281 | "funding": { 282 | "url": "https://github.com/fb55/entities?sponsor=1" 283 | } 284 | }, 285 | "node_modules/fetch-blob": { 286 | "version": "3.1.4", 287 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", 288 | "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", 289 | "funding": [ 290 | { 291 | "type": "github", 292 | "url": "https://github.com/sponsors/jimmywarting" 293 | }, 294 | { 295 | "type": "paypal", 296 | "url": "https://paypal.me/jimmywarting" 297 | } 298 | ], 299 | "dependencies": { 300 | "node-domexception": "^1.0.0", 301 | "web-streams-polyfill": "^3.0.3" 302 | }, 303 | "engines": { 304 | "node": "^12.20 || >= 14.13" 305 | } 306 | }, 307 | "node_modules/foreground-child": { 308 | "version": "3.2.1", 309 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", 310 | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", 311 | "dependencies": { 312 | "cross-spawn": "^7.0.0", 313 | "signal-exit": "^4.0.1" 314 | }, 315 | "engines": { 316 | "node": ">=14" 317 | }, 318 | "funding": { 319 | "url": "https://github.com/sponsors/isaacs" 320 | } 321 | }, 322 | "node_modules/formdata-polyfill": { 323 | "version": "4.0.10", 324 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 325 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 326 | "dependencies": { 327 | "fetch-blob": "^3.1.2" 328 | }, 329 | "engines": { 330 | "node": ">=12.20.0" 331 | } 332 | }, 333 | "node_modules/fs-extra": { 334 | "version": "11.3.0", 335 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", 336 | "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", 337 | "dependencies": { 338 | "graceful-fs": "^4.2.0", 339 | "jsonfile": "^6.0.1", 340 | "universalify": "^2.0.0" 341 | }, 342 | "engines": { 343 | "node": ">=14.14" 344 | } 345 | }, 346 | "node_modules/glob": { 347 | "version": "11.0.0", 348 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", 349 | "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", 350 | "dependencies": { 351 | "foreground-child": "^3.1.0", 352 | "jackspeak": "^4.0.1", 353 | "minimatch": "^10.0.0", 354 | "minipass": "^7.1.2", 355 | "package-json-from-dist": "^1.0.0", 356 | "path-scurry": "^2.0.0" 357 | }, 358 | "bin": { 359 | "glob": "dist/esm/bin.mjs" 360 | }, 361 | "engines": { 362 | "node": "20 || >=22" 363 | }, 364 | "funding": { 365 | "url": "https://github.com/sponsors/isaacs" 366 | } 367 | }, 368 | "node_modules/graceful-fs": { 369 | "version": "4.2.8", 370 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 371 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 372 | }, 373 | "node_modules/htmlparser2": { 374 | "version": "9.1.0", 375 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", 376 | "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", 377 | "funding": [ 378 | "https://github.com/fb55/htmlparser2?sponsor=1", 379 | { 380 | "type": "github", 381 | "url": "https://github.com/sponsors/fb55" 382 | } 383 | ], 384 | "dependencies": { 385 | "domelementtype": "^2.3.0", 386 | "domhandler": "^5.0.3", 387 | "domutils": "^3.1.0", 388 | "entities": "^4.5.0" 389 | } 390 | }, 391 | "node_modules/iconv-lite": { 392 | "version": "0.6.3", 393 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 394 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 395 | "dependencies": { 396 | "safer-buffer": ">= 2.1.2 < 3.0.0" 397 | }, 398 | "engines": { 399 | "node": ">=0.10.0" 400 | } 401 | }, 402 | "node_modules/is-fullwidth-code-point": { 403 | "version": "3.0.0", 404 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 405 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 406 | "engines": { 407 | "node": ">=8" 408 | } 409 | }, 410 | "node_modules/isexe": { 411 | "version": "2.0.0", 412 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 413 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 414 | }, 415 | "node_modules/jackspeak": { 416 | "version": "4.0.1", 417 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", 418 | "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", 419 | "dependencies": { 420 | "@isaacs/cliui": "^8.0.2" 421 | }, 422 | "engines": { 423 | "node": "20 || >=22" 424 | }, 425 | "funding": { 426 | "url": "https://github.com/sponsors/isaacs" 427 | }, 428 | "optionalDependencies": { 429 | "@pkgjs/parseargs": "^0.11.0" 430 | } 431 | }, 432 | "node_modules/jsonfile": { 433 | "version": "6.1.0", 434 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 435 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 436 | "dependencies": { 437 | "universalify": "^2.0.0" 438 | }, 439 | "optionalDependencies": { 440 | "graceful-fs": "^4.1.6" 441 | } 442 | }, 443 | "node_modules/lru-cache": { 444 | "version": "11.0.0", 445 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", 446 | "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", 447 | "engines": { 448 | "node": "20 || >=22" 449 | } 450 | }, 451 | "node_modules/minimatch": { 452 | "version": "10.0.1", 453 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 454 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 455 | "dependencies": { 456 | "brace-expansion": "^2.0.1" 457 | }, 458 | "engines": { 459 | "node": "20 || >=22" 460 | }, 461 | "funding": { 462 | "url": "https://github.com/sponsors/isaacs" 463 | } 464 | }, 465 | "node_modules/minipass": { 466 | "version": "7.1.2", 467 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 468 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 469 | "engines": { 470 | "node": ">=16 || 14 >=14.17" 471 | } 472 | }, 473 | "node_modules/node-domexception": { 474 | "version": "1.0.0", 475 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 476 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 477 | "funding": [ 478 | { 479 | "type": "github", 480 | "url": "https://github.com/sponsors/jimmywarting" 481 | }, 482 | { 483 | "type": "github", 484 | "url": "https://paypal.me/jimmywarting" 485 | } 486 | ], 487 | "engines": { 488 | "node": ">=10.5.0" 489 | } 490 | }, 491 | "node_modules/node-fetch": { 492 | "version": "3.3.2", 493 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", 494 | "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", 495 | "dependencies": { 496 | "data-uri-to-buffer": "^4.0.0", 497 | "fetch-blob": "^3.1.4", 498 | "formdata-polyfill": "^4.0.10" 499 | }, 500 | "engines": { 501 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 502 | }, 503 | "funding": { 504 | "type": "opencollective", 505 | "url": "https://opencollective.com/node-fetch" 506 | } 507 | }, 508 | "node_modules/nth-check": { 509 | "version": "2.1.1", 510 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 511 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 512 | "dependencies": { 513 | "boolbase": "^1.0.0" 514 | }, 515 | "funding": { 516 | "url": "https://github.com/fb55/nth-check?sponsor=1" 517 | } 518 | }, 519 | "node_modules/package-json-from-dist": { 520 | "version": "1.0.0", 521 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 522 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" 523 | }, 524 | "node_modules/parse5": { 525 | "version": "7.1.2", 526 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 527 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 528 | "dependencies": { 529 | "entities": "^4.4.0" 530 | }, 531 | "funding": { 532 | "url": "https://github.com/inikulin/parse5?sponsor=1" 533 | } 534 | }, 535 | "node_modules/parse5-htmlparser2-tree-adapter": { 536 | "version": "7.0.0", 537 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 538 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 539 | "dependencies": { 540 | "domhandler": "^5.0.2", 541 | "parse5": "^7.0.0" 542 | }, 543 | "funding": { 544 | "url": "https://github.com/inikulin/parse5?sponsor=1" 545 | } 546 | }, 547 | "node_modules/parse5-parser-stream": { 548 | "version": "7.1.2", 549 | "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", 550 | "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", 551 | "dependencies": { 552 | "parse5": "^7.0.0" 553 | }, 554 | "funding": { 555 | "url": "https://github.com/inikulin/parse5?sponsor=1" 556 | } 557 | }, 558 | "node_modules/path-key": { 559 | "version": "3.1.1", 560 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 561 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 562 | "engines": { 563 | "node": ">=8" 564 | } 565 | }, 566 | "node_modules/path-scurry": { 567 | "version": "2.0.0", 568 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", 569 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", 570 | "dependencies": { 571 | "lru-cache": "^11.0.0", 572 | "minipass": "^7.1.2" 573 | }, 574 | "engines": { 575 | "node": "20 || >=22" 576 | }, 577 | "funding": { 578 | "url": "https://github.com/sponsors/isaacs" 579 | } 580 | }, 581 | "node_modules/rimraf": { 582 | "version": "6.0.1", 583 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", 584 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", 585 | "dependencies": { 586 | "glob": "^11.0.0", 587 | "package-json-from-dist": "^1.0.0" 588 | }, 589 | "bin": { 590 | "rimraf": "dist/esm/bin.mjs" 591 | }, 592 | "engines": { 593 | "node": "20 || >=22" 594 | }, 595 | "funding": { 596 | "url": "https://github.com/sponsors/isaacs" 597 | } 598 | }, 599 | "node_modules/safer-buffer": { 600 | "version": "2.1.2", 601 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 602 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 603 | }, 604 | "node_modules/shebang-command": { 605 | "version": "2.0.0", 606 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 607 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 608 | "dependencies": { 609 | "shebang-regex": "^3.0.0" 610 | }, 611 | "engines": { 612 | "node": ">=8" 613 | } 614 | }, 615 | "node_modules/shebang-regex": { 616 | "version": "3.0.0", 617 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 618 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 619 | "engines": { 620 | "node": ">=8" 621 | } 622 | }, 623 | "node_modules/showdown": { 624 | "version": "2.1.0", 625 | "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", 626 | "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", 627 | "dependencies": { 628 | "commander": "^9.0.0" 629 | }, 630 | "bin": { 631 | "showdown": "bin/showdown.js" 632 | }, 633 | "funding": { 634 | "type": "individual", 635 | "url": "https://www.paypal.me/tiviesantos" 636 | } 637 | }, 638 | "node_modules/signal-exit": { 639 | "version": "4.1.0", 640 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 641 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 642 | "engines": { 643 | "node": ">=14" 644 | }, 645 | "funding": { 646 | "url": "https://github.com/sponsors/isaacs" 647 | } 648 | }, 649 | "node_modules/string-width": { 650 | "version": "5.1.2", 651 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 652 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 653 | "dependencies": { 654 | "eastasianwidth": "^0.2.0", 655 | "emoji-regex": "^9.2.2", 656 | "strip-ansi": "^7.0.1" 657 | }, 658 | "engines": { 659 | "node": ">=12" 660 | }, 661 | "funding": { 662 | "url": "https://github.com/sponsors/sindresorhus" 663 | } 664 | }, 665 | "node_modules/string-width-cjs": { 666 | "name": "string-width", 667 | "version": "4.2.3", 668 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 669 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 670 | "dependencies": { 671 | "emoji-regex": "^8.0.0", 672 | "is-fullwidth-code-point": "^3.0.0", 673 | "strip-ansi": "^6.0.1" 674 | }, 675 | "engines": { 676 | "node": ">=8" 677 | } 678 | }, 679 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 680 | "version": "5.0.1", 681 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 682 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 683 | "engines": { 684 | "node": ">=8" 685 | } 686 | }, 687 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 688 | "version": "8.0.0", 689 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 690 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 691 | }, 692 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 693 | "version": "6.0.1", 694 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 695 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 696 | "dependencies": { 697 | "ansi-regex": "^5.0.1" 698 | }, 699 | "engines": { 700 | "node": ">=8" 701 | } 702 | }, 703 | "node_modules/strip-ansi": { 704 | "version": "7.1.0", 705 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 706 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 707 | "dependencies": { 708 | "ansi-regex": "^6.0.1" 709 | }, 710 | "engines": { 711 | "node": ">=12" 712 | }, 713 | "funding": { 714 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 715 | } 716 | }, 717 | "node_modules/strip-ansi-cjs": { 718 | "name": "strip-ansi", 719 | "version": "6.0.1", 720 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 721 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 722 | "dependencies": { 723 | "ansi-regex": "^5.0.1" 724 | }, 725 | "engines": { 726 | "node": ">=8" 727 | } 728 | }, 729 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 730 | "version": "5.0.1", 731 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 732 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 733 | "engines": { 734 | "node": ">=8" 735 | } 736 | }, 737 | "node_modules/undici": { 738 | "version": "6.21.1", 739 | "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", 740 | "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", 741 | "license": "MIT", 742 | "engines": { 743 | "node": ">=18.17" 744 | } 745 | }, 746 | "node_modules/universalify": { 747 | "version": "2.0.0", 748 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 749 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 750 | "engines": { 751 | "node": ">= 10.0.0" 752 | } 753 | }, 754 | "node_modules/web-streams-polyfill": { 755 | "version": "3.2.0", 756 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", 757 | "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", 758 | "engines": { 759 | "node": ">= 8" 760 | } 761 | }, 762 | "node_modules/whatwg-encoding": { 763 | "version": "3.1.1", 764 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", 765 | "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", 766 | "dependencies": { 767 | "iconv-lite": "0.6.3" 768 | }, 769 | "engines": { 770 | "node": ">=18" 771 | } 772 | }, 773 | "node_modules/whatwg-mimetype": { 774 | "version": "4.0.0", 775 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", 776 | "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", 777 | "engines": { 778 | "node": ">=18" 779 | } 780 | }, 781 | "node_modules/which": { 782 | "version": "2.0.2", 783 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 784 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 785 | "dependencies": { 786 | "isexe": "^2.0.0" 787 | }, 788 | "bin": { 789 | "node-which": "bin/node-which" 790 | }, 791 | "engines": { 792 | "node": ">= 8" 793 | } 794 | }, 795 | "node_modules/wrap-ansi": { 796 | "version": "8.1.0", 797 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 798 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 799 | "dependencies": { 800 | "ansi-styles": "^6.1.0", 801 | "string-width": "^5.0.1", 802 | "strip-ansi": "^7.0.1" 803 | }, 804 | "engines": { 805 | "node": ">=12" 806 | }, 807 | "funding": { 808 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 809 | } 810 | }, 811 | "node_modules/wrap-ansi-cjs": { 812 | "name": "wrap-ansi", 813 | "version": "7.0.0", 814 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 815 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 816 | "dependencies": { 817 | "ansi-styles": "^4.0.0", 818 | "string-width": "^4.1.0", 819 | "strip-ansi": "^6.0.0" 820 | }, 821 | "engines": { 822 | "node": ">=10" 823 | }, 824 | "funding": { 825 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 826 | } 827 | }, 828 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 829 | "version": "5.0.1", 830 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 831 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 832 | "engines": { 833 | "node": ">=8" 834 | } 835 | }, 836 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 837 | "version": "4.3.0", 838 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 839 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 840 | "dependencies": { 841 | "color-convert": "^2.0.1" 842 | }, 843 | "engines": { 844 | "node": ">=8" 845 | }, 846 | "funding": { 847 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 848 | } 849 | }, 850 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 851 | "version": "8.0.0", 852 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 853 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 854 | }, 855 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 856 | "version": "4.2.3", 857 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 858 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 859 | "dependencies": { 860 | "emoji-regex": "^8.0.0", 861 | "is-fullwidth-code-point": "^3.0.0", 862 | "strip-ansi": "^6.0.1" 863 | }, 864 | "engines": { 865 | "node": ">=8" 866 | } 867 | }, 868 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 869 | "version": "6.0.1", 870 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 871 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 872 | "dependencies": { 873 | "ansi-regex": "^5.0.1" 874 | }, 875 | "engines": { 876 | "node": ">=8" 877 | } 878 | } 879 | }, 880 | "dependencies": { 881 | "@isaacs/cliui": { 882 | "version": "8.0.2", 883 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 884 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 885 | "requires": { 886 | "string-width": "^5.1.2", 887 | "string-width-cjs": "npm:string-width@^4.2.0", 888 | "strip-ansi": "^7.0.1", 889 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 890 | "wrap-ansi": "^8.1.0", 891 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 892 | } 893 | }, 894 | "@pkgjs/parseargs": { 895 | "version": "0.11.0", 896 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 897 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 898 | "optional": true 899 | }, 900 | "ansi-regex": { 901 | "version": "6.0.1", 902 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 903 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" 904 | }, 905 | "ansi-styles": { 906 | "version": "6.2.1", 907 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 908 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" 909 | }, 910 | "balanced-match": { 911 | "version": "1.0.2", 912 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 913 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 914 | }, 915 | "boolbase": { 916 | "version": "1.0.0", 917 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 918 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 919 | }, 920 | "brace-expansion": { 921 | "version": "2.0.1", 922 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 923 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 924 | "requires": { 925 | "balanced-match": "^1.0.0" 926 | } 927 | }, 928 | "cheerio": { 929 | "version": "1.0.0", 930 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", 931 | "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", 932 | "requires": { 933 | "cheerio-select": "^2.1.0", 934 | "dom-serializer": "^2.0.0", 935 | "domhandler": "^5.0.3", 936 | "domutils": "^3.1.0", 937 | "encoding-sniffer": "^0.2.0", 938 | "htmlparser2": "^9.1.0", 939 | "parse5": "^7.1.2", 940 | "parse5-htmlparser2-tree-adapter": "^7.0.0", 941 | "parse5-parser-stream": "^7.1.2", 942 | "undici": "^6.19.5", 943 | "whatwg-mimetype": "^4.0.0" 944 | } 945 | }, 946 | "cheerio-select": { 947 | "version": "2.1.0", 948 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 949 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 950 | "requires": { 951 | "boolbase": "^1.0.0", 952 | "css-select": "^5.1.0", 953 | "css-what": "^6.1.0", 954 | "domelementtype": "^2.3.0", 955 | "domhandler": "^5.0.3", 956 | "domutils": "^3.0.1" 957 | } 958 | }, 959 | "color-convert": { 960 | "version": "2.0.1", 961 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 962 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 963 | "requires": { 964 | "color-name": "~1.1.4" 965 | } 966 | }, 967 | "color-name": { 968 | "version": "1.1.4", 969 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 970 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 971 | }, 972 | "commander": { 973 | "version": "9.0.0", 974 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", 975 | "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==" 976 | }, 977 | "cross-spawn": { 978 | "version": "7.0.6", 979 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 980 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 981 | "requires": { 982 | "path-key": "^3.1.0", 983 | "shebang-command": "^2.0.0", 984 | "which": "^2.0.1" 985 | } 986 | }, 987 | "css-select": { 988 | "version": "5.1.0", 989 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 990 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 991 | "requires": { 992 | "boolbase": "^1.0.0", 993 | "css-what": "^6.1.0", 994 | "domhandler": "^5.0.2", 995 | "domutils": "^3.0.1", 996 | "nth-check": "^2.0.1" 997 | } 998 | }, 999 | "css-what": { 1000 | "version": "6.1.0", 1001 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 1002 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" 1003 | }, 1004 | "data-uri-to-buffer": { 1005 | "version": "4.0.0", 1006 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 1007 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" 1008 | }, 1009 | "dom-serializer": { 1010 | "version": "2.0.0", 1011 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 1012 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 1013 | "requires": { 1014 | "domelementtype": "^2.3.0", 1015 | "domhandler": "^5.0.2", 1016 | "entities": "^4.2.0" 1017 | } 1018 | }, 1019 | "domelementtype": { 1020 | "version": "2.3.0", 1021 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 1022 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" 1023 | }, 1024 | "domhandler": { 1025 | "version": "5.0.3", 1026 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 1027 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 1028 | "requires": { 1029 | "domelementtype": "^2.3.0" 1030 | } 1031 | }, 1032 | "domutils": { 1033 | "version": "3.1.0", 1034 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 1035 | "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 1036 | "requires": { 1037 | "dom-serializer": "^2.0.0", 1038 | "domelementtype": "^2.3.0", 1039 | "domhandler": "^5.0.3" 1040 | } 1041 | }, 1042 | "draftlog": { 1043 | "version": "1.0.13", 1044 | "resolved": "https://registry.npmjs.org/draftlog/-/draftlog-1.0.13.tgz", 1045 | "integrity": "sha512-GeMWOpXERBpfVDK6v7m0x1hPg8+g8ZsZWqJl2T17wHqrm4h8fnjiZmXcnCrmwogAc6R3YTxFXax15wezfuyCUw==" 1046 | }, 1047 | "eastasianwidth": { 1048 | "version": "0.2.0", 1049 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1050 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 1051 | }, 1052 | "emoji-regex": { 1053 | "version": "9.2.2", 1054 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1055 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 1056 | }, 1057 | "encoding-sniffer": { 1058 | "version": "0.2.0", 1059 | "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", 1060 | "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", 1061 | "requires": { 1062 | "iconv-lite": "^0.6.3", 1063 | "whatwg-encoding": "^3.1.1" 1064 | } 1065 | }, 1066 | "entities": { 1067 | "version": "4.5.0", 1068 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1069 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" 1070 | }, 1071 | "fetch-blob": { 1072 | "version": "3.1.4", 1073 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", 1074 | "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", 1075 | "requires": { 1076 | "node-domexception": "^1.0.0", 1077 | "web-streams-polyfill": "^3.0.3" 1078 | } 1079 | }, 1080 | "foreground-child": { 1081 | "version": "3.2.1", 1082 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", 1083 | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", 1084 | "requires": { 1085 | "cross-spawn": "^7.0.0", 1086 | "signal-exit": "^4.0.1" 1087 | } 1088 | }, 1089 | "formdata-polyfill": { 1090 | "version": "4.0.10", 1091 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 1092 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 1093 | "requires": { 1094 | "fetch-blob": "^3.1.2" 1095 | } 1096 | }, 1097 | "fs-extra": { 1098 | "version": "11.3.0", 1099 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", 1100 | "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", 1101 | "requires": { 1102 | "graceful-fs": "^4.2.0", 1103 | "jsonfile": "^6.0.1", 1104 | "universalify": "^2.0.0" 1105 | } 1106 | }, 1107 | "glob": { 1108 | "version": "11.0.0", 1109 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", 1110 | "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", 1111 | "requires": { 1112 | "foreground-child": "^3.1.0", 1113 | "jackspeak": "^4.0.1", 1114 | "minimatch": "^10.0.0", 1115 | "minipass": "^7.1.2", 1116 | "package-json-from-dist": "^1.0.0", 1117 | "path-scurry": "^2.0.0" 1118 | } 1119 | }, 1120 | "graceful-fs": { 1121 | "version": "4.2.8", 1122 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", 1123 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" 1124 | }, 1125 | "htmlparser2": { 1126 | "version": "9.1.0", 1127 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", 1128 | "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", 1129 | "requires": { 1130 | "domelementtype": "^2.3.0", 1131 | "domhandler": "^5.0.3", 1132 | "domutils": "^3.1.0", 1133 | "entities": "^4.5.0" 1134 | } 1135 | }, 1136 | "iconv-lite": { 1137 | "version": "0.6.3", 1138 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1139 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1140 | "requires": { 1141 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1142 | } 1143 | }, 1144 | "is-fullwidth-code-point": { 1145 | "version": "3.0.0", 1146 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1147 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1148 | }, 1149 | "isexe": { 1150 | "version": "2.0.0", 1151 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1152 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1153 | }, 1154 | "jackspeak": { 1155 | "version": "4.0.1", 1156 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", 1157 | "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", 1158 | "requires": { 1159 | "@isaacs/cliui": "^8.0.2", 1160 | "@pkgjs/parseargs": "^0.11.0" 1161 | } 1162 | }, 1163 | "jsonfile": { 1164 | "version": "6.1.0", 1165 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 1166 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 1167 | "requires": { 1168 | "graceful-fs": "^4.1.6", 1169 | "universalify": "^2.0.0" 1170 | } 1171 | }, 1172 | "lru-cache": { 1173 | "version": "11.0.0", 1174 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", 1175 | "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" 1176 | }, 1177 | "minimatch": { 1178 | "version": "10.0.1", 1179 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 1180 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 1181 | "requires": { 1182 | "brace-expansion": "^2.0.1" 1183 | } 1184 | }, 1185 | "minipass": { 1186 | "version": "7.1.2", 1187 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1188 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" 1189 | }, 1190 | "node-domexception": { 1191 | "version": "1.0.0", 1192 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 1193 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" 1194 | }, 1195 | "node-fetch": { 1196 | "version": "3.3.2", 1197 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", 1198 | "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", 1199 | "requires": { 1200 | "data-uri-to-buffer": "^4.0.0", 1201 | "fetch-blob": "^3.1.4", 1202 | "formdata-polyfill": "^4.0.10" 1203 | } 1204 | }, 1205 | "nth-check": { 1206 | "version": "2.1.1", 1207 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 1208 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 1209 | "requires": { 1210 | "boolbase": "^1.0.0" 1211 | } 1212 | }, 1213 | "package-json-from-dist": { 1214 | "version": "1.0.0", 1215 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 1216 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" 1217 | }, 1218 | "parse5": { 1219 | "version": "7.1.2", 1220 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 1221 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 1222 | "requires": { 1223 | "entities": "^4.4.0" 1224 | } 1225 | }, 1226 | "parse5-htmlparser2-tree-adapter": { 1227 | "version": "7.0.0", 1228 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 1229 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 1230 | "requires": { 1231 | "domhandler": "^5.0.2", 1232 | "parse5": "^7.0.0" 1233 | } 1234 | }, 1235 | "parse5-parser-stream": { 1236 | "version": "7.1.2", 1237 | "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", 1238 | "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", 1239 | "requires": { 1240 | "parse5": "^7.0.0" 1241 | } 1242 | }, 1243 | "path-key": { 1244 | "version": "3.1.1", 1245 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1246 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1247 | }, 1248 | "path-scurry": { 1249 | "version": "2.0.0", 1250 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", 1251 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", 1252 | "requires": { 1253 | "lru-cache": "^11.0.0", 1254 | "minipass": "^7.1.2" 1255 | } 1256 | }, 1257 | "rimraf": { 1258 | "version": "6.0.1", 1259 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", 1260 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", 1261 | "requires": { 1262 | "glob": "^11.0.0", 1263 | "package-json-from-dist": "^1.0.0" 1264 | } 1265 | }, 1266 | "safer-buffer": { 1267 | "version": "2.1.2", 1268 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1269 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1270 | }, 1271 | "shebang-command": { 1272 | "version": "2.0.0", 1273 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1274 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1275 | "requires": { 1276 | "shebang-regex": "^3.0.0" 1277 | } 1278 | }, 1279 | "shebang-regex": { 1280 | "version": "3.0.0", 1281 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1282 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1283 | }, 1284 | "showdown": { 1285 | "version": "2.1.0", 1286 | "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", 1287 | "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", 1288 | "requires": { 1289 | "commander": "^9.0.0" 1290 | } 1291 | }, 1292 | "signal-exit": { 1293 | "version": "4.1.0", 1294 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1295 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" 1296 | }, 1297 | "string-width": { 1298 | "version": "5.1.2", 1299 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1300 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1301 | "requires": { 1302 | "eastasianwidth": "^0.2.0", 1303 | "emoji-regex": "^9.2.2", 1304 | "strip-ansi": "^7.0.1" 1305 | } 1306 | }, 1307 | "string-width-cjs": { 1308 | "version": "npm:string-width@4.2.3", 1309 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1310 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1311 | "requires": { 1312 | "emoji-regex": "^8.0.0", 1313 | "is-fullwidth-code-point": "^3.0.0", 1314 | "strip-ansi": "^6.0.1" 1315 | }, 1316 | "dependencies": { 1317 | "ansi-regex": { 1318 | "version": "5.0.1", 1319 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1320 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1321 | }, 1322 | "emoji-regex": { 1323 | "version": "8.0.0", 1324 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1325 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1326 | }, 1327 | "strip-ansi": { 1328 | "version": "6.0.1", 1329 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1330 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1331 | "requires": { 1332 | "ansi-regex": "^5.0.1" 1333 | } 1334 | } 1335 | } 1336 | }, 1337 | "strip-ansi": { 1338 | "version": "7.1.0", 1339 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 1340 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1341 | "requires": { 1342 | "ansi-regex": "^6.0.1" 1343 | } 1344 | }, 1345 | "strip-ansi-cjs": { 1346 | "version": "npm:strip-ansi@6.0.1", 1347 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1348 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1349 | "requires": { 1350 | "ansi-regex": "^5.0.1" 1351 | }, 1352 | "dependencies": { 1353 | "ansi-regex": { 1354 | "version": "5.0.1", 1355 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1356 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1357 | } 1358 | } 1359 | }, 1360 | "undici": { 1361 | "version": "6.21.1", 1362 | "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", 1363 | "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==" 1364 | }, 1365 | "universalify": { 1366 | "version": "2.0.0", 1367 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 1368 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 1369 | }, 1370 | "web-streams-polyfill": { 1371 | "version": "3.2.0", 1372 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", 1373 | "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==" 1374 | }, 1375 | "whatwg-encoding": { 1376 | "version": "3.1.1", 1377 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", 1378 | "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", 1379 | "requires": { 1380 | "iconv-lite": "0.6.3" 1381 | } 1382 | }, 1383 | "whatwg-mimetype": { 1384 | "version": "4.0.0", 1385 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", 1386 | "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" 1387 | }, 1388 | "which": { 1389 | "version": "2.0.2", 1390 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1391 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1392 | "requires": { 1393 | "isexe": "^2.0.0" 1394 | } 1395 | }, 1396 | "wrap-ansi": { 1397 | "version": "8.1.0", 1398 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 1399 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 1400 | "requires": { 1401 | "ansi-styles": "^6.1.0", 1402 | "string-width": "^5.0.1", 1403 | "strip-ansi": "^7.0.1" 1404 | } 1405 | }, 1406 | "wrap-ansi-cjs": { 1407 | "version": "npm:wrap-ansi@7.0.0", 1408 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1409 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1410 | "requires": { 1411 | "ansi-styles": "^4.0.0", 1412 | "string-width": "^4.1.0", 1413 | "strip-ansi": "^6.0.0" 1414 | }, 1415 | "dependencies": { 1416 | "ansi-regex": { 1417 | "version": "5.0.1", 1418 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1419 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1420 | }, 1421 | "ansi-styles": { 1422 | "version": "4.3.0", 1423 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1424 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1425 | "requires": { 1426 | "color-convert": "^2.0.1" 1427 | } 1428 | }, 1429 | "emoji-regex": { 1430 | "version": "8.0.0", 1431 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1432 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1433 | }, 1434 | "string-width": { 1435 | "version": "4.2.3", 1436 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1437 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1438 | "requires": { 1439 | "emoji-regex": "^8.0.0", 1440 | "is-fullwidth-code-point": "^3.0.0", 1441 | "strip-ansi": "^6.0.1" 1442 | } 1443 | }, 1444 | "strip-ansi": { 1445 | "version": "6.0.1", 1446 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1447 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1448 | "requires": { 1449 | "ansi-regex": "^5.0.1" 1450 | } 1451 | } 1452 | } 1453 | } 1454 | } 1455 | } 1456 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "awesome-docker-website", 3 | "version": "1.0.0", 4 | "description": "A curated list of Docker resources and projects Inspired by @sindresorhus and improved by amazing contributors", 5 | "main": "build.js", 6 | "scripts": { 7 | "build": "rimraf ./dist/ && node build.js", 8 | "test-pr": "node tests/pull_request.mjs", 9 | "test": "node tests/test_all.mjs" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/veggiemonk/awesome-docker.git" 14 | }, 15 | "author": "Julien Bisconti