├── .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 | [](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 | [](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 | 
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 | 
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 |
--------------------------------------------------------------------------------