repo2docker/docs/source/config_files.rst

160 wiersze
6.2 KiB
ReStructuredText
Czysty Zwykły widok Historia

.. NOTE: the header characters are different in this file because it is 'included' in another site
.. see https://raw.githubusercontent.com/jupyterhub/binder/master/doc/using.rst
2018-06-27 01:01:13 +00:00
.. _config-files:
Configuration Files
-------------------
2018-06-27 01:01:13 +00:00
``repo2docker`` looks for configuration files in the repository being built
2018-07-05 18:25:43 +00:00
to determine how to build it. In general, ``repo2docker`` uses the same
configuration files as other software installation tools,
rather than creating new custom configuration files.
2018-07-05 18:25:43 +00:00
A number of ``repo2docker`` configuration files can be combined to compose more
complex setups.
``repo2docker`` will look for configuration files in either:
2018-07-05 18:25:43 +00:00
* A folder named ``binder/`` in the root of the repository.
* The root directory of the repository.
2018-07-05 18:25:43 +00:00
If the folder ``binder/`` is located at the top level of the repository,
**only configuration files in the** ``binder/`` **folder will be considered**.
2018-07-05 18:25:43 +00:00
The `binder examples <https://github.com/binder-examples>`_ organization on
GitHub contains a list of sample repositories for common configurations
that ``repo2docker`` can build with various configuration files such as
Python and R installation in a repo.
Below is a list of supported configuration files (roughly in the order of build priority):
2018-06-27 01:01:13 +00:00
.. contents::
:local:
:depth: 1
``Dockerfile``
~~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
In the majority of cases, providing your own Dockerfile is not necessary as the base
images provide core functionality, compact image sizes, and efficient builds. We recommend
trying the other configuration files before deciding to use your own Dockerfile.
2018-06-28 04:35:27 +00:00
With Dockerfiles, a regular Docker build will be performed.
**If a Dockerfile is present, all other configuration files will be ignored.**
2018-06-27 01:01:13 +00:00
See the `Binder Documentation <https://mybinder.readthedocs.io/en/latest/dockerfile.html>`_ for
2018-06-27 19:52:57 +00:00
best-practices with Dockerfiles.
2018-06-27 01:01:13 +00:00
.. _environment-yml:
2018-06-27 01:01:13 +00:00
``environment.yml``
~~~~~~~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
2018-07-05 18:25:43 +00:00
``environment.yml`` is the standard configuration file used by Anaconda, conda,
and miniconda that lets you install Python packages.
2018-06-27 01:01:13 +00:00
You can also install files from pip in your ``environment.yml`` as well.
2018-06-28 04:35:27 +00:00
Our example `environment.yml <https://github.com/binder-examples/python-conda_pip/blob/master/environment.yml>`_
2018-06-27 19:52:57 +00:00
shows how one can specify a conda environment for repo2docker.
2018-06-27 01:01:13 +00:00
2018-07-05 18:25:43 +00:00
You can also specify which Python version to install in your built environment
with ``environment.yml``. By default, ``repo2docker`` **installs
Python 3.6** with your ``environment.yml`` unless you include the version of
Python in the file. ``conda`` supports Python versions 3.6, 3.5, 3.4, and 2.7.
``repo2docker`` support is best with Python 3.6, 3.5, and 2.7. If you include
2018-07-02 03:51:40 +00:00
a Python version in a ``runtime.txt`` file in addition to your
``environment.yml``, your ``runtime.txt`` **will be ignored**.
2018-06-27 01:01:13 +00:00
``requirements.txt``
~~~~~~~~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
2018-06-27 19:52:57 +00:00
This specifies a list of Python packages that should be installed in your
2018-06-28 04:35:27 +00:00
environment. Our
`requirements.txt example <https://github.com/binder-examples/requirements/blob/master/requirements.txt>`_
2018-06-27 01:01:13 +00:00
on GitHub shows a typical requirements file.
``REQUIRE``
~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
This specifies a list of Julia packages. Repositories with a ``REQUIRE`` file
**must also contain an** ``environment.yml`` **file**. To see an example of a
Julia repository with ``REQUIRE`` and ``environment.yml``,
visit `binder-examples/julia-python <https://github.com/binder-examples/julia-python>`_.
``install.R``
~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
This is used to install R libraries pinned to a specific snapshot on
`MRAN <https://mran.microsoft.com/documents/rro/reproducibility>`_.
2018-06-27 19:52:57 +00:00
To set the date of the snapshot add a runtime.txt_.
For an example ``install.R`` file, visit our `example install.R file <https://github.com/binder-examples/r/blob/master/install.R>`_.
2018-06-27 01:01:13 +00:00
``apt.txt``
~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
A list of Debian packages that should be installed. The base image used is usually the latest released
version of Ubuntu.
We use ``apt.txt``, for example, to install LaTeX in our
`example apt.txt for LaTeX <https://github.com/binder-examples/latex/blob/master/apt.txt>`_.
``setup.py``
~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
2018-06-27 19:52:57 +00:00
To install your repository like a Python package, you may include a
``setup.py`` file. repo2docker installs ``setup.py`` files by running
``pip install -e .``.
2018-06-28 04:35:27 +00:00
2018-06-27 19:52:57 +00:00
While one can specify dependencies in ``setup.py``,
2018-06-27 01:01:13 +00:00
repo2docker **requires configuration files such as** ``environment.yml`` or
2018-06-28 04:35:27 +00:00
``requirements.txt`` to install dependencies during the build process.
2018-06-27 01:01:13 +00:00
.. _postBuild:
2018-06-27 01:01:13 +00:00
``postBuild``
~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
A script that can contain arbitrary commands to be run after the whole repository has been built. If you
2018-06-27 19:52:57 +00:00
want this to be a shell script, make sure the first line is ```#!/bin/bash``.
2018-06-27 01:01:13 +00:00
An example usecase of ``postBuild`` file is JupyterLab's demo on mybinder.org.
It uses a ``postBuild`` file in a folder called ``binder`` to `prepare
their demo for binder <https://github.com/jupyterlab/jupyterlab-demo/blob/master/binder/postBuild>`_.
2018-07-31 19:48:55 +00:00
.. _start:
``start``
2018-08-03 06:21:57 +00:00
^^^^^^^^^
2018-07-31 19:48:55 +00:00
A script that can contain arbitrary commands to be run at runtime (as an
`ENTRYPOINT <https://docs.docker.com/engine/reference/builder/#entrypoint>`
to the docker container). If you want this to be a shell script, make sure the
first line is ```#!/bin/bash``. The last line must be ```exec "$@"```
equivalent.
.. TODO: Discuss runtime limits, best practices, etc.
Also, point to an example.
2018-06-27 19:52:57 +00:00
.. _runtime.txt:
2018-06-27 01:01:13 +00:00
``runtime.txt``
~~~~~~~~~~~~~~~
2018-06-27 01:01:13 +00:00
This allows you to control the runtime of Python or R.
2018-06-28 04:35:27 +00:00
To use python-2.7: add python-2.7 in runtime.txt file.
The repository will run in a virtualenv with
2018-06-27 19:52:57 +00:00
Python 2 installed. To see a full example repository, visit our
`Python2 example <https://github.com/binder-examples/python2_runtime/blob/master/runtime.txt>`_.
2018-07-02 03:51:40 +00:00
**Python versions in ``runtime.txt`` are ignored when** ``environment.yml`` **is
present in the same folder**.
2018-06-27 01:01:13 +00:00
repo2docker uses R libraries pinned to a specific snapshot on
`MRAN <https://mran.microsoft.com/documents/rro/reproducibility>`_.
2018-06-28 04:35:27 +00:00
You need to have a ``runtime.txt`` file that is formatted as
2018-06-27 01:01:13 +00:00
``r-<YYYY>-<MM>-<DD>``, where YYYY-MM-DD is a snapshot at MRAN that will be
used for installing libraries.
To see an example R repository, visit our `R
example in binder-examples <https://github.com/binder-examples/r/blob/master/runtime.txt>`_.