├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── container-specs.md └── imgs ├── BioContainers.png ├── biocontainers-logo.png ├── container.png ├── edf3082e-84e4-11e6-95b5-ac8d2a0992b8.png ├── workflow.png └── workflow.svg /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # User-specific stuff: 3 | .idea* 4 | *.iml 5 | .idea/ 6 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | This document briefly describes how to contribute to the [BioContainers project](https://github.com/BioContainers/specs). 4 | 5 | ## Before you Begin 6 | 7 | If you have an idea for a feature/container to add or an approach for a bugfix, it is best to communicate with BioContainers developers early. The most 8 | common venues for this are [GitHub issues](https://github.com/BioContainers/specs/issues) for common specification issues and the 9 | [Containers and Tools](https://github.com/BioContainers/containers/issues) for container/docker related issues. 10 | Browse through existing GitHub issues and if one seems related, comment on it. If no existing issue seems appropriate, a new issue can be 11 | opened using [this form](https://github.com/BioContainers/BioContainers/issues/new). BioContainers developers are also generally available via BioContainerss@gmail.com or 12 | [![Join the chat at https://gitter.im/biocontainers/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/biocontainers/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 13 | 14 | ## How to Contribute 15 | 16 | * All changes to the [specifications BioContainers project](https://github.com/BioContainers/bidocker) 17 | should be made through pull requests to this repository (with just two 18 | exceptions outlined below). 19 | 20 | * If you are new to Git, the [Try Git](http://try.github.com/) tutorial is a good places to start. 21 | More learning resources are listed at https://help.github.com/articles/good-resources-for-learning-git-and-github/ . 22 | 23 | * Make sure you have a free [GitHub](https://github.com/) account. 24 | 25 | * Fork the [container repository](https://github.com/BioContainers/containers) on 26 | GitHub to make your changes. (While many Containers instances track active development 27 | happens in the containers GitHub repository and this is where pull requests 28 | should be made). 29 | 30 | * Choose the correct branch to develop your changes against. 31 | 32 | * Additions of new features to the code base should be pushed to the `dev` branch (`git 33 | checkout dev`). 34 | 35 | * Most bug fixes to previously release components (things in bidocker-dist) 36 | should be made against the recent `release_XX.XX` branch (`git checkout release_XX.XX`). 37 | 38 | * Serious security problems should not be fixed via pull request - please 39 | responsibly disclose these by e-mailing them (with or without patches) to 40 | biodockers@gmail.com . The BioContainers core development team will solve 41 | those issues and we will provide you credit for the discovery when publicly 42 | disclosing the issue. 43 | 44 | * If your changes modify containers/images - please ensure the resulting files 45 | conform to BioContainers Specifications [BioContainers 46 | Specifications](http://biocontainers.pro/docs/developer-manual/biocotainers-dockerfile/). 47 | 48 | * Commit and push your changes to your 49 | [fork](https://help.github.com/articles/pushing-to-a-remote/). 50 | 51 | * Open a [pull 52 | request](https://help.github.com/articles/creating-a-pull-request/) 53 | with these changes. You pull request message ideally should include: 54 | 55 | * A description of why the changes should be made. 56 | 57 | * A description of the implementation of the changes. 58 | 59 | * A description of how to test the changes. 60 | 61 | * The pull request should pass all the continuous integration tests which are 62 | automatically run by GitHub using e.g. Travis CI. 63 | 64 | ## Ideas 65 | 66 | BioContainers's [BioContainers Specification and Design](http://github.com/BioContainers/BioContainers/issues) is filled with comments and ideas 67 | for enhancements and we believe would make the best entry points for new developers. 68 | 69 | ## A Quick Note about Containers 70 | 71 | For the most part, BioContainers containers should be published to the [BioContainers containers](https://github.com/BioContainers/BioContainers) and not in this repository directly. 72 | If you are looking to supply new containers first check if an existing container exists in this repository [BioContainers containers](https://github.com/BioContainers/BioContainers) - 73 | please checkout the repository on GitHub. 74 | 75 | ## Handling Pull Requests 76 | 77 | Everyone is encouraged to express opinions and issue non-binding votes on pull 78 | requests, but only members of the *contributors* group may issue binding votes 79 | on pull requests. 80 | 81 | Votes on pull requests should take the form of 82 | [+1, 0, -1, and fractions](http://www.apache.org/foundation/voting.html) 83 | as outlined by the Apache Foundation. 84 | 85 | Pull requests modifying pre-existing releases should be restricted to bug fixes 86 | and require at least 2 *+1* binding votes from someone other than the author of 87 | the pull request with no *-1* binding votes. 88 | 89 | Pull requests changing or clarifying the procedures governing this repository: 90 | 91 | - Must be made to the ``dev`` branch of this repository. 92 | - Must remain open for at least 192 hours (unless every qualified committer has 93 | voted). 94 | - Require binding *+1* votes from at least 25% of qualified *committers* with no 95 | *-1* binding votes. 96 | - Should be titled with the prefix *[PROCEDURES]* and tagged with 97 | the *procedures* tag in Github. 98 | - Should not be modified once open. If changes are needed, the pull request 99 | should be closed, re-opened with modifications, and votes reset. 100 | - Should be restricted to just modifying the procedures and generally should not 101 | contain code modifications. 102 | - If the pull request adds or removes committers, there must be a separate 103 | pull request for each person added or removed. 104 | 105 | Any other pull request requires at least 1 *+1* binding vote from someone other 106 | than the author of the pull request. A member of the committers group merging a 107 | pull request is considered an implicit +1. 108 | 109 | Pull requests marked *[WIP]* (i.e. work in progress) in the title by the 110 | author(s), or tagged WIP via GitHub tags, may *not* be merged without 111 | coordinating the removal of that tag with the pull request author(s), and 112 | completing the removal of that tag from wherever it is present in the open pull 113 | request. 114 | 115 | ### Timelines 116 | 117 | Except in the case of pull requests modifying governance procedures, there are 118 | generally no objective guidelines defining how long pull requests must remain 119 | open for comment. Subjectively speaking though - larger and more potentially 120 | controversial pull requests containing enhancements should remain open for a at 121 | least a few days to give everyone the opportunity to weigh in. 122 | 123 | ### Vetoes 124 | 125 | A note on vetoes (*-1* votes) taken verbatim from the 126 | [Apache Foundation](http://www.apache.org/foundation/voting.html): 127 | 128 | >"A code-modification proposal may be stopped dead in its tracks by a -1 vote 129 | by a qualified voter. This constitutes a veto, and it cannot be overruled nor 130 | overridden by anyone. Vetoes stand until and unless withdrawn by their casters. 131 | > 132 | >To prevent vetoes from being used capriciously, they must be accompanied by a 133 | technical justification showing why the change is bad (opens a security 134 | exposure, negatively affects performance, etc. ). A veto without a 135 | justification is invalid and has no weight." 136 | 137 | For votes regarding non-coding issues such as procedure changes, the requirement 138 | that a veto is accompanied by a *technical* justification is relaxed somewhat, 139 | though a well reasoned justification must still be included. 140 | 141 | ### Reversions 142 | 143 | A *-1* vote on any recently merged pull request requires an immediate 144 | reversion of the merged pull request. The backout of such a pull request 145 | invokes a mandatory, minimum 72 hour, review period. 146 | 147 | - Recently merged pull requests are defined as a being within the past 168 hours (7 148 | days), so as to not prevent forward progress, while allowing for reversions of 149 | things merged without proper review and consensus. 150 | - The person issuing the -1 vote will, upon commenting `-1` with technical 151 | justification per the vetoes section, immediately open a pull request to 152 | revert the original merge in question. If any committer other than the -1 153 | issuer deems the justification technical - regardless of whether they agree 154 | with justification - that committer must then merge the pull request to 155 | revert. 156 | 157 | ### Direct Commit Access 158 | 159 | The BioContainers *committers* group may only commit directly to BioContainers (i.e. outside 160 | of a pull request and not following the procedures described here) the 161 | following two categories of patches: 162 | 163 | * Patches for serious security vulnerabilities. 164 | * Cherry-picking and/or merging of existing approved commits to other 165 | branches. 166 | -------------------------------------------------------------------------------- /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. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The latest information about BioContainers is available via [https://BioContainers.pro](https://Biocontainers.pro/) 6 | 7 | 8 | [![Join the chat at https://gitter.im/BioContainers/biocontainers](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/biocontainers/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 9 | 10 | 11 | Containers 12 | -------- 13 | Repository of approved bioinformatics containers 14 | 15 | Links: 16 | ------- 17 | Web Page : http://biocontainers.pro/ 18 | 19 | Project Definition : https://github.com/BioContainers/specs 20 | 21 | Contribution Rules : https://github.com/BioContainers/specs/blob/master/CONTRIBUTING.md 22 | 23 | Containers : https://github.com/BioContainers/containers 24 | 25 | Email : biodockers@gmail.com 26 | 27 | License 28 | ---------- 29 | 30 | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) 31 | 32 | Contents 33 | ---------- 34 | 35 | 1. [Essentials](#essentials) 36 | 1.1. [What is BioContainers](#11-what-is-biocontainers) 37 | 1.2. [Objectives](#12-objectives-and-goals) 38 | 2. [Containers](#2-containers) 39 | 2.1. [What is a container?](#21-what-is-a-container) 40 | 2.2. [Why do I need to use a container](#22-what-do-i-need-to-use-a-container) 41 | 2.3. [How to use a BioContainer](#23-how-to-use-a-biocontainer) 42 | 2.4. [BioContainers Architecture](#24-biocontainers-architecture) 43 | 2.4.1 [How to Request a Container](#241-how-to-request-a-container) 44 | 2.4.2 [Add a container](#242-add-a-container) 45 | 2.4.3 [Use a Container](#243-use-a-bioContainer.) 46 | 3. [Developing containers](#3-developing-containers) 47 | 3.1. [How to build BioContainers](#31-how-to-build-biocontainers) 48 | 3.2. [What do I need to develop?](#32-what-do-i-need-to-develop) 49 | 3.3. [How to create a Docker based BioContainer?](#33-how-to-create-a-docker-based-biocontainer) 50 | 4. [Support](#4-support) 51 | 4.1 [Get involved](#41-get-involved) 52 | 53 | ## 1. Essentials 54 | ------------------ 55 | 56 | ### 1.1. What is BioContainers? 57 | 58 | The BioContainers project came from the idea of using the containers-based technologies such as [Docker](https://www.docker.com) or [rkt](https://github.com/coreos/rkt) for bioinformatics software. Having a common and controllable environment for running software could help to deal with some of the current problems during software development and distribution. BioContainers is a community-driven project that provides the infrastructure and basic guidelines to create, manage and distribute bioinformatics containers with a special focus on omics fields such as proteomics, genomics, transcriptomics and metabolomics. The main containers already implemented in BioContainers (https://github.com/BioContainers/containers) are discussed in details including examples on how to use BioContainers. 59 | The currently available BioContainers containers facilitate the usage, and reproducibility of software and algorithms. They can be integrated into more comprehensive bioinformatics pipelines and different architectures (local desktop, Cloud environments or HPC clusters). We also present the guidelines and specifications on how to create new containers, and how to contribute to the BioContainers project. 60 | 61 | ### 1.2. Objectives and Goals 62 | 63 | * Provide a base specification and images to easily build and deploy new bioinformatics/proteomics software 64 | including the source and examples. 65 | 66 | * Provide a series of containers ready to be used by the bioinformatics community (https://github.com/BioContainers/containers). 67 | 68 | * Define a set of guidelines and specifications to build a standardized container that can be 69 | used in combination with other containers and bioinformatics tools. 70 | 71 | * Define a complete infrastructure to develop, deploy and test new bioinformatics containers 72 | using continuous integration suites such as Travis Continuous Integration (https://travisci. 73 | org/), Shippable (https://app.shippable.com/) or manually built solutions. 74 | 75 | * Provide support and help to the bioinformatics community to deploy new containers for researchers that do not have bioinformatics support. 76 | 77 | * Provide guidelines and help on how to create reproducible pipelines by defining, reusing 78 | and reporting specific container versions which will consistently produce the exact same 79 | result and always be available in the history of the container. 80 | 81 | * Coordinate and integrate developers and bioinformaticians to produce best practice of 82 | documentation and software development. 83 | 84 | ## 2. Containers 85 | ------------- 86 | 87 | ### 2.1. What is a container? 88 | 89 | Containers are build from existing operating systems. They are different from Virtual machines because they don't possess an entire guest OS inside, instead, containers are built using optimized system libraries and use the host OS memory management and process controls. Containers normally are centralized around a specific software and you can make them executable by instantiating images from them. 90 | 91 | ![What is Container](imgs/container.png) 92 | 93 | ### 2.2. What do I need to use a container? 94 | 95 | Most of the time when a bioinformatics analysis is performed, several bioinformatics tools and software should be installed and configured. This process can take several hours and demands a lot of efforts including the installation of multiple dependencies and tools. BioContainers provides ready to use packages and tools that can be easily deployed and used in local machines, HPC and cloud architectures. 96 | 97 | ### 2.3. How to use a BioContainer 98 | 99 | BioContainers are listed in two main registries: 100 | 101 | * [Docker Hub](https://hub.docker.com/u/biocontainers/): Docker based containers that can be used using the docker infrastructure. 102 | * [QUAY Hub](https://quay.io/organization/biocontainers): Docker and rkt based containers that can be used using the rkt infrastructure. 103 | 104 | A full documentation about how to use BioContainers to perform bioinformatics analysis: please check the [Full Documentation](http://BioDocker.org/docs) 105 | 106 | ### 2.4. BioContainers Architecture 107 | 108 | BioContainers is a community-driven project that allows bioinformatics to request, build and deploy bioinformatics tools using containers. The following figure present the general BioContainers workflow: 109 | 110 | ![What is Container](imgs/workflow.svg) 111 | 112 | The next sections explain in details the presented workflow: 113 | 114 | * (i) How to request a workflow 115 | * (ii) Use a BioContainer 116 | * (iii) Developing containers 117 | 118 | 119 | #### 2.4.1 How to Request a Container 120 | 121 | Users can request a container by opening an issue in the [containers 122 | repository] (http://github.com/BioContainers/containers/issues) `(In the previous workflow this is the first step performed by user henrik)`. The issue should contain the name of the software, the url of the code or binary to be package and information about the software [see BioContainers specification](https://github.com/BioContainers/specs/blob/master/container-specs.md). When the container is deployed and fully functional, the issue will be closed by the developer or the contributor to BioContainers. 123 | 124 | #### 2.4.2 Add a container 125 | 126 | Fork the repository and add a container. To add a container: 127 | 128 | * create directory name_of_software/version_of_upstream_software 129 | * in directory add a Dockerfile [following BioContainers specification](https://github.com/BioContainers/specs/blob/master/container-specs.md) 130 | * optionally (but recommended) add a test-cmds.txt file to test automatically the container (list of one-line bash commands 131 | 132 | Example test-cmds.txt 133 | 134 | mytool -v 135 | mytool -h 136 | 137 | Test the container recipe where your Dockerfile is: 138 | 139 | docker build . 140 | 141 | If ok, commit and push your changes to your fork and ask for a pull request to our repository. 142 | 143 | #### 2.4.3 Use a BioContainer 144 | 145 | When a container is deployed and the developer closes the issue in GitHub, the user `(henrik)` receives a notification that the container is ready. 146 | The user can then use [docker](http://www.docker.com) or [rkt](https://coreos.com/rkt/docs/latest/) to pull or fetch the corresponding container. 147 | 148 | 149 | ## 3. Developing containers 150 | ----------------------- 151 | 152 | ### 3.1. How to build BioContainers 153 | 154 | There are two different ways to build a container. 155 | 156 | * Go to the GitHub repository with the recipe of the software you want, clone it, and build it yourself on your machine. 157 | * Use the docker daemon to search for a ready-to-use version of the containerized software you want. 158 | 159 | Inside the central repository there is a list of softwares with docker recipes, there you can find more information about how to work with them. 160 | 161 | ### 3.2. What do I need to develop? 162 | 163 | BioContainers are based on Linux systems, so you will need a computer with Linux installed, you also will need the `docker` or `rkt` daemon and the software you want to containerize. 164 | 165 | ### 3.3. How to create a Docker based Biocontainer? 166 | 167 | Having all in hands now you need to create a Dockerfile. Dockerfiles are simple recipes to instruct the daemon on how to set an appropriate OS and how to download, manage, install and give access to the software inside. 168 | 169 | You can check the [Docker](https://docs.docker.com/reference/builder/) documentation for more information. 170 | 171 | Once the container is ready you can get in touch with us so we can make the appropriate arrangements to make your container available to everyone in the community by giving an automated build system. 172 | 173 | ### 3.3. How to create a rkt based Biocontainer? 174 | 175 | Having all in hands now you need to create a rkt. rkt containers are simple recipes to instruct the daemon on how to set an appropriate OS and how to download, manage, install and give access to the software inside. 176 | 177 | You can check the [rkt](https://github.com/coreos/rkt/blob/master/Documentation/getting-started-guide.md) documentation for more information. 178 | 179 | Once the container is ready you can get in touch with us so we can make the appropriate arrangements to make your container available to everyone in the community by giving an automated build system. 180 | 181 | 182 | ## 4. Support 183 | ---------- 184 | 185 | ### 4.1. Get involved 186 | 187 | Whether you want to make your own software available to others as a container, to just use them on your pipelines and analysis or just give opinions, you are most welcome. This is a community-driven project, that means everyone has a voice. 188 | 189 | Here are some general ideas: 190 | 191 | * Browse our list of containers 192 | * Propose your own ideas or software 193 | * Interact with other if you think there is something missing. 194 | 195 | -------------------------------------------------------------------------------- /container-specs.md: -------------------------------------------------------------------------------- 1 | Container Specifications 2 | ======================== 3 | 4 | Each container should provide a well-defined metadata header that allows the final users to test, deploy and get support around the container. 5 | We explain here the containers metadata, their meaning and use in BioContainers: 6 | 7 | 8 | 9 | | Field | Description | Optional | Example | 10 | |----------------|------------ |------------------------------------------------------|-----------| 11 | | LABEL base_image | The original image where the software has been built | **Mandatory** | base_image=" biodckr/biodocker" | 12 | | LABEL version | Version of the tool's Dockerfile | **Mandatory** | version="2" | 13 | | LABEL software.version | Version of the software or tool | **Mandatory** | software.version="2015020" | 14 | | LABEL software | Name of the software or tool | **Mandatory** | software="Comet" | 15 | | LABEL about.summary | A short description of the software or tool. | **Mandatory** | about.summary="Peptide" identification| 16 | | LABEL about.home | The original software website. | **Mandatory** | about.home="http://comet-ms.sourceforge.net/" | 17 | | LABEL about.documentation | URL(s) containing information about software | _Optional_ | about.documentation="http://comet-ms.sourceforge.net/" | 18 | | LABEL about.license | SPDX license specification. If not in the SPDX list, specify URL in license_file> | **Mandatory** | about.license="SPDX:Apache-2.0" | 19 | | LABEL about.license_file | License path location in the container or url (according to license requirements) | _Optional_ | | 20 | | LABEL about.tags | Tags about the software that enable to find and classify the software tool.| _Optional_ | about.tags="proteomics, mass spectrometry, biocontainers" | 21 | | LABEL maintainer | The developer in charge of the container/software | **Mandatory** | maintainer="Yasset Perez-Riverol " | 22 | | LABEL extra.identifiers | Extra identifiers are external identifiers in other resources that will allow to pull metadata, an external information from other resources (e.g biotools). In order to be compatible with Docker specification the domain (database) of the identifiers should be specified in the name of the label. | _Optional_ | extra.identifiers.biotools=abyss | 23 | 24 | 25 | ### Dockerfile example (Single lines LABEL): 26 | 27 | ```Dockerfile 28 | # Base Image 29 | FROM biocontainers/biocontainers:latest 30 | 31 | # Metadata 32 | LABEL base_image="biocontainers:latest" 33 | LABEL version="3" 34 | LABEL software="Comet" 35 | LABEL software.version="2016012" 36 | LABEL about.summary="an open source tandem mass spectrometry sequence database search tool" 37 | LABEL about.home="http://comet-ms.sourceforge.net/" 38 | LABEL about.documentation="http://comet-ms.sourceforge.net/parameters/parameters_2016010/" 39 | LABEL about.license="SPDX:Apache-2.0" 40 | LABEL about.license_file="/usr/share/common-licenses/Apache-2.0" 41 | LABEL about.tags="Proteomics" 42 | LABEL extra.identifiers.biotools=comet 43 | LABEL maintainer="Felipe da Veiga Leprevost " 44 | 45 | USER biodocker 46 | 47 | RUN ZIP=comet_binaries_2016012.zip && \ 48 | wget https://github.com/BioDocker/software-archive/releases/download/Comet/$ZIP -O /tmp/$ZIP && \ 49 | unzip /tmp/$ZIP -d /home/biodocker/bin/Comet/ && \ 50 | chmod -R 755 /home/biodocker/bin/Comet/* && \ 51 | rm /tmp/$ZIP 52 | 53 | RUN mv /home/biodocker/bin/Comet/comet_binaries_2016012/comet.2016012.linux.exe /home/biodocker/bin/Comet/comet 54 | 55 | ENV PATH /home/biodocker/bin/Comet:$PATH 56 | 57 | WORKDIR /data/ 58 | 59 | ``` 60 | 61 | 62 | ### Dockerfile example (Multiple lines LABEL): 63 | 64 | ```Dockerfile 65 | 66 | # Base Image 67 | FROM biocontainers/biocontainers:latest 68 | 69 | # Metadata 70 | LABEL base_image="biocontainers:latest" \ 71 | version="3" \ 72 | software="Comet" \ 73 | software.version="2016012" \ 74 | about.summary="an open source tandem mass spectrometry sequence database search tool" \ 75 | about.home="http://comet-ms.sourceforge.net/" \ 76 | about.documentation="http://comet-ms.sourceforge.net/parameters/parameters_2016010/" \ 77 | about.license="SPDX:Apache-2.0" \ 78 | about.license_file="/usr/share/common-licenses/Apache-2.0" \ 79 | about.tags="Proteomics" \ 80 | extra.identifiers.biotools=comet 81 | 82 | # Maintainer 83 | LABEL maintainer="Felipe da Veiga Leprevost " 84 | 85 | USER biodocker 86 | 87 | RUN ZIP=comet_binaries_2016012.zip && \ 88 | wget https://github.com/BioDocker/software-archive/releases/download/Comet/$ZIP -O /tmp/$ZIP && \ 89 | unzip /tmp/$ZIP -d /home/biodocker/bin/Comet/ && \ 90 | chmod -R 755 /home/biodocker/bin/Comet/* && \ 91 | rm /tmp/$ZIP 92 | 93 | RUN mv /home/biodocker/bin/Comet/comet_binaries_2016012/comet.2016012.linux.exe /home/biodocker/bin/Comet/comet 94 | 95 | ENV PATH /home/biodocker/bin/Comet:$PATH 96 | 97 | WORKDIR /data/ 98 | 99 | ``` 100 | -------------------------------------------------------------------------------- /imgs/BioContainers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BioContainers/specs/15bff9146bce7f2ee1b48b4e3433b676eb4cf4dc/imgs/BioContainers.png -------------------------------------------------------------------------------- /imgs/biocontainers-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BioContainers/specs/15bff9146bce7f2ee1b48b4e3433b676eb4cf4dc/imgs/biocontainers-logo.png -------------------------------------------------------------------------------- /imgs/container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BioContainers/specs/15bff9146bce7f2ee1b48b4e3433b676eb4cf4dc/imgs/container.png -------------------------------------------------------------------------------- /imgs/edf3082e-84e4-11e6-95b5-ac8d2a0992b8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BioContainers/specs/15bff9146bce7f2ee1b48b4e3433b676eb4cf4dc/imgs/edf3082e-84e4-11e6-95b5-ac8d2a0992b8.png -------------------------------------------------------------------------------- /imgs/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BioContainers/specs/15bff9146bce7f2ee1b48b4e3433b676eb4cf4dc/imgs/workflow.png -------------------------------------------------------------------------------- /imgs/workflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | image/svg+xmlimage/svg+xml 56 | 57 | background 58 | 59 | 60 | 61 | Layer 1 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | develop 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | containers 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | push 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | BioContainers Architecture 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | scientific community 126 | and users 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | bob 139 | 140 | 141 | 142 | 143 | 144 | 145 | pull 146 | request 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | specification 156 | 157 | 158 | 159 | 160 | karlo 161 | 162 | 163 | 164 | reports 165 | issue 166 | 167 | 168 | 169 | 170 | 171 | marks 172 | as solved 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | anne 181 | 182 | 183 | 184 | 185 | 186 | 187 | DockerHub 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | continuous 205 | integration 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | test 215 | 216 | 217 | 218 | build 219 | 220 | 221 | 222 | ship 223 | 224 | 225 | 226 | release 227 | 228 | 229 | team organization 230 | 231 | 232 | docker pull 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | QUAY.io 247 | 248 | 249 | 250 | henrik 251 | 252 | Container Request 253 | Comments 254 | Developers 255 | and Contributors 256 | 257 | Pick a new container issue 258 | 259 | 260 | 261 | 262 | henrik 263 | 264 | rkt fetch quay.io/repository 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | andrew 273 | 274 | 275 | 276 | 277 | fork 278 | local 279 | 280 | 281 | --------------------------------------------------------------------------------