kopia lustrzana https://github.com/jupyterhub/repo2docker
commit
d5cfe3c24a
54
README.md
54
README.md
|
@ -3,9 +3,12 @@
|
||||||
|
|
||||||
[](https://travis-ci.org/jupyter/repo2docker)
|
[](https://travis-ci.org/jupyter/repo2docker)
|
||||||
[](http://repo2docker.readthedocs.io/en/latest/?badge=latest)
|
[](http://repo2docker.readthedocs.io/en/latest/?badge=latest)
|
||||||
|
|
||||||
**jupyter-repo2docker** is a tool to build, run and push docker images from source code repositories.
|
|
||||||
|
|
||||||
|
**jupyter-repo2docker** takes as input a repository source, such as a GitHub repo. It then builds, runs, and/or pushes Docker images built from
|
||||||
|
that source.
|
||||||
|
|
||||||
|
See the [repo2docker documentation](http://repo2docker.readthedocs.io)
|
||||||
|
for more information.
|
||||||
|
|
||||||
## Pre-requisites
|
## Pre-requisites
|
||||||
|
|
||||||
|
@ -55,49 +58,14 @@ After building (it might take a while!), it should output in your terminal somet
|
||||||
If you copy paste that URL into your browser you will see a Jupyter Notebook with the
|
If you copy paste that URL into your browser you will see a Jupyter Notebook with the
|
||||||
contents of the repository you had just built!
|
contents of the repository you had just built!
|
||||||
|
|
||||||
### Displaying the image Dockerfile
|
For more information on how to use ``repo2docker``, see the
|
||||||
Repo2Docker will generate a Dockerfile that composes the created Docker image.
|
[usage guide](http://repo2docker.readthedocs.io/en/latest/usage.html).
|
||||||
To see the contents of this Dockerfile without building the image use `--debug` and `--no-build`
|
|
||||||
flags like so:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
jupyter-repo2docker --debug --no-build https://github.com/jakevdp/PythonDataScienceHandbook
|
|
||||||
```
|
|
||||||
|
|
||||||
## Repository specifications
|
## Repository specifications
|
||||||
|
|
||||||
Repo2Docker looks for various files in the repository being built to figure out how to build it.
|
Repo2Docker looks for configuration files in the source repository to
|
||||||
|
determine how the Docker image should be built.
|
||||||
It is philosophically similar to [Heroku Build Packs](https://devcenter.heroku.com/articles/buildpacks).
|
It is philosophically similar to [Heroku Build Packs](https://devcenter.heroku.com/articles/buildpacks).
|
||||||
|
|
||||||
It currently looks for the following files. They are all composable - you can use any number of them
|
For a list of the configuration files that ``repo2docker`` can use,
|
||||||
in the same repository (except for Dockerfiles, which take precedence over everything else).
|
see the [usage guide](http://repo2docker.readthedocs.io/en/latest/usage.html).
|
||||||
|
|
||||||
### `requirements.txt`
|
|
||||||
|
|
||||||
This specifies a list of python packages that would be installed in a virtualenv (or conda environment).
|
|
||||||
|
|
||||||
### `environment.yml`
|
|
||||||
|
|
||||||
This is a conda environment specification, that lets you install packages with conda. Note that you must
|
|
||||||
leave the name of the environment empty for this to work out of the box.
|
|
||||||
|
|
||||||
### `apt.txt`
|
|
||||||
|
|
||||||
A list of debian packages that should be installed. The base image used is usually the latest released
|
|
||||||
version of Ubuntu (currently Zesty.)
|
|
||||||
|
|
||||||
### `postBuild`
|
|
||||||
|
|
||||||
A script that can contain arbitrary commands to be run after the whole repository has been built. If you
|
|
||||||
want this to be a shell script, make sure the first line is `#!/bin/bash`. This file must have the
|
|
||||||
executable bit set (`chmod +x postBuild`) to be considered.
|
|
||||||
|
|
||||||
### `REQUIRE`
|
|
||||||
|
|
||||||
This specifies a list of Julia packages! Currently only version 0.6 of Julia is supported, but more will
|
|
||||||
be as they are released.
|
|
||||||
|
|
||||||
### `Dockerfile`
|
|
||||||
|
|
||||||
This will be treated as a regular Dockerfile and a regular Docker build will be performed. The presence
|
|
||||||
of a Dockerfile will cause all other building behavior to not be triggered.
|
|
||||||
|
|
|
@ -4,6 +4,11 @@ A collection of frequently asked questions with answers!
|
||||||
|
|
||||||
If you have a question & have found an answer, send a PR to add it here!
|
If you have a question & have found an answer, send a PR to add it here!
|
||||||
|
|
||||||
|
## How should I specify another version of Python 3?
|
||||||
|
|
||||||
|
Currently the best way to do this is by using a conda ``environment.yml``
|
||||||
|
file and setting the language to whichever version of Python you like.
|
||||||
|
|
||||||
## Can I use repo2docker to bootstrap my own Dockerfile?
|
## Can I use repo2docker to bootstrap my own Dockerfile?
|
||||||
|
|
||||||
No, you can't.
|
No, you can't.
|
||||||
|
|
|
@ -10,6 +10,8 @@ Site Contents
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
|
install
|
||||||
|
usage
|
||||||
design
|
design
|
||||||
faq
|
faq
|
||||||
samples
|
samples
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
.. _install:
|
||||||
|
|
||||||
|
Installing ``repo2docker``
|
||||||
|
==========================
|
||||||
|
|
||||||
|
1. Install `Docker <https://www.docker.com>`_ as it is required to build Docker images.
|
||||||
|
|
||||||
|
2. We recommend installing ``repo2docker`` with the ``pip`` tool::
|
||||||
|
|
||||||
|
python3 -m pip install jupyter-repo2docker
|
||||||
|
|
||||||
|
For infomation on using ``repo2docker``, see :ref:`usage`.
|
||||||
|
|
||||||
|
Installing repo2docker from source code
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
Alternatively, you can install repo2docker from source,
|
||||||
|
i.e. if you are contributing back to this project::
|
||||||
|
|
||||||
|
git clone https://github.com/jupyter/repo2docker.git
|
||||||
|
cd repo2docker
|
||||||
|
pip install -e .
|
||||||
|
|
||||||
|
That's it! For information on using ``repo2docker``, see
|
||||||
|
:ref:`usage`.
|
|
@ -1,5 +1,7 @@
|
||||||
Sample build files
|
.. _samples:
|
||||||
==================
|
|
||||||
|
Sample build repositories
|
||||||
|
=========================
|
||||||
|
|
||||||
There are many options for specifying your environment with ``repo2docker``.
|
There are many options for specifying your environment with ``repo2docker``.
|
||||||
The following sections describe a few samples to get you started.
|
The following sections describe a few samples to get you started.
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
.. _usage:
|
||||||
|
|
||||||
|
Using ``repo2docker``
|
||||||
|
=====================
|
||||||
|
|
||||||
|
The core functionality of repo2docker is to fetch a repo (e.g., from GitHub or
|
||||||
|
other locations) and build a container image based on the specifications found in the
|
||||||
|
repo. Optionally, it can launch a local Jupyter Notebook which you can use to explore it.
|
||||||
|
|
||||||
|
This section describes the general ways in which you can use
|
||||||
|
``repo2docker``, including:
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:depth: 1
|
||||||
|
:local:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
See the `Frequently Asked Questions <faq.html>`_ for more info.
|
||||||
|
|
||||||
|
Preparing your repository
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
``repo2docker`` looks for configuration files in the repository being built
|
||||||
|
to determine how to build it. It is philosophically similar to
|
||||||
|
`Heroku Build Packs <https://devcenter.heroku.com/articles/buildpacks>`_.
|
||||||
|
``repo2docker`` will look for files in two places:
|
||||||
|
|
||||||
|
* A folder called ``binder`` in the root of the repository.
|
||||||
|
* The root of the repository. (if a folder called ``binder`` exists in the root
|
||||||
|
of the repository, configuration files outside of that folder will be ignored)
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
In general, ``repo2docker`` uses configuration files that are already part of
|
||||||
|
various data science workflows (e.g., ``requirements.txt``), rather than
|
||||||
|
creating new custom configuration files.
|
||||||
|
|
||||||
|
``repodocker`` configuration files are all composable - you can use any number
|
||||||
|
of them in the same repository. There are a few notable rules:
|
||||||
|
|
||||||
|
* ``Dockerfile``: if a Dockerfile is present in a repository, it will take precedence
|
||||||
|
over all other configuration files (which will be ignored).
|
||||||
|
* ``environment.yml`` with ``requirements.txt``: If both of these files are
|
||||||
|
present, then ``environment.yml`` will be used to build the image, **not**
|
||||||
|
``requirements.txt``. If you wish to ``pip install`` packages using an
|
||||||
|
``environment.yml`` file, `you should do so with the
|
||||||
|
*pip:* key <https://conda.io/docs/user-guide/tasks/manage-environments.html#creating-an-environment-file-manually>`_.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
For a list of repositories demonstrating various configurations,
|
||||||
|
see :ref:`samples`.
|
||||||
|
|
||||||
|
Supported configuration files
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Below is a list of supported configuration files.
|
||||||
|
|
||||||
|
``requirements.txt``
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This specifies a list of python packages that would be installed in a virtualenv (or conda environment).
|
||||||
|
|
||||||
|
``environment.yml``
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This is a conda environment specification, that lets you install packages with conda.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
You must leave the ``environment.yml``'s name field empty for this
|
||||||
|
to work out of the box.
|
||||||
|
|
||||||
|
``apt.txt``
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
A list of debian packages that should be installed. The base image used is usually the latest released
|
||||||
|
version of Ubuntu (currently Zesty.)
|
||||||
|
|
||||||
|
``postBuild``
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A script that can contain arbitrary commands to be run after the whole repository has been built. If you
|
||||||
|
want this to be a shell script, make sure the first line is `#!/bin/bash`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This file must be executable to be used with ``repo2docker``. To do this,
|
||||||
|
run the following::
|
||||||
|
|
||||||
|
chmod +x postBuild
|
||||||
|
|
||||||
|
``REQUIRE``
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
This specifies a list of Julia packages!
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Using a ``REQUIRE`` file also requires that the repository contain an
|
||||||
|
``environment.yml`` file.
|
||||||
|
|
||||||
|
``Dockerfile``
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This will be treated as a regular Dockerfile and a regular Docker build will be performed. The presence
|
||||||
|
of a Dockerfile will cause all other building behavior to not be triggered.
|
||||||
|
|
||||||
|
Using ``repo2docker`` with a JupyterHub
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
It is possible to use ``repo2docker`` in order to build JupyterHub-ready
|
||||||
|
Docker images. In order for this to work properly, **the version of the ``jupyterhub``
|
||||||
|
package in your git repository must match the version in your JupyterHub
|
||||||
|
deployment**. For example, if your JupyterHub deployment runs ``jupyterhub==0.8``,
|
||||||
|
you should put the following in ``requirements.txt`` or ``environment.yml``::
|
||||||
|
|
||||||
|
jupyterhub==0.8.*
|
||||||
|
|
||||||
|
Running ``repo2docker`` locally
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
For information on installing ``repo2docker``, see :ref:`install`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Docker must be running on your machine in order to build images
|
||||||
|
with ``repo2docker``.
|
||||||
|
|
||||||
|
Building an image
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The simplest invocation of ``repo2docker`` builds a Docker image
|
||||||
|
from a git repo, then runs a Jupyter server within the image
|
||||||
|
so you can explore the repository's contents.
|
||||||
|
You can do this with the following command::
|
||||||
|
|
||||||
|
jupyter-repo2docker https://github.com/jakevdp/PythonDataScienceHandbook
|
||||||
|
|
||||||
|
After building (it might take a while!), it should output a message in your terminal::
|
||||||
|
|
||||||
|
Copy/paste this URL into your browser when you connect for the first time,
|
||||||
|
to login with a token:
|
||||||
|
http://0.0.0.0:36511/?token=f94f8fabb92e22f5bfab116c382b4707fc2cade56ad1ace0
|
||||||
|
|
||||||
|
If you copy/paste that URL into your browser you will see a Jupyter Notebook with the
|
||||||
|
contents of the repository you have just built!
|
||||||
|
|
||||||
|
Displaying the image Dockerfile
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
``repo2docker`` will generate a Dockerfile that composes the created Docker image.
|
||||||
|
To see the contents of this Dockerfile without building the image use
|
||||||
|
the ``--debug`` and ``--no-build`` flags like so::
|
||||||
|
|
||||||
|
jupyter-repo2docker --debug --no-build https://github.com/jakevdp/PythonDataScienceHandbook
|
||||||
|
|
||||||
|
This will output the contents of the Dockerfile in your console. Note that it
|
||||||
|
will **not** build the image.
|
||||||
|
|
||||||
|
Accessing help from the command line
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
For a list of all the build configurations at your disposal, see the
|
||||||
|
CLI help::
|
||||||
|
|
||||||
|
jupyter-repo2docker -h
|
Ładowanie…
Reference in New Issue