mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-14 13:32:56 +00:00
Merge pull request #1135 from parente/test-gh-actions
Update doc, Dockerfile to test GH Actions
This commit is contained in:
10
.github/workflows/docker.yml
vendored
10
.github/workflows/docker.yml
vendored
@@ -1,7 +1,15 @@
|
||||
name: Build Docker Images
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- "*.md"
|
||||
- "binder/**"
|
||||
- "docs/**"
|
||||
- "examples/**"
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths-ignore:
|
||||
- "*.md"
|
||||
- "binder/**"
|
||||
@@ -51,7 +59,7 @@ jobs:
|
||||
- name: Login to Docker Hub
|
||||
run: >
|
||||
echo '${{secrets.DOCKERHUB_PASSWORD}}' | docker login --username
|
||||
'${{secrets.DOCKERHUB_USERNAME}}'' --password-stdin
|
||||
'${{secrets.DOCKERHUB_USERNAME}}' --password-stdin
|
||||
- name: Push Images to DockerHub
|
||||
run: make -C main push-all
|
||||
- name: Push Wiki to GitHub
|
||||
|
6
.github/workflows/sphinx.yml
vendored
6
.github/workflows/sphinx.yml
vendored
@@ -1,7 +1,13 @@
|
||||
name: Build Sphinx Documentation
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "docs/**"
|
||||
- ".github/workflows/sphinx.yml"
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- "docs/**"
|
||||
- ".github/workflows/sphinx.yml"
|
||||
|
@@ -1,33 +1,49 @@
|
||||
# New Features
|
||||
|
||||
Thank you for contributing to the Jupyter Docker Stacks! We review pull requests of new features (e.g., new packages, new scripts, new flags) to balance the value of the images to the Jupyter community with the cost of maintaining the images over time.
|
||||
Thank you for contributing to the Jupyter Docker Stacks! We review pull requests of new features
|
||||
(e.g., new packages, new scripts, new flags) to balance the value of the images to the Jupyter
|
||||
community with the cost of maintaining the images over time.
|
||||
|
||||
## Suggesting a New Feature
|
||||
|
||||
Please follow the process below to suggest a new feature for inclusion in one of the core stacks:
|
||||
|
||||
1. [Open a GitHub issue](https://github.com/jupyter/docker-stacks/issues) describing the feature you'd like to contribute.
|
||||
2. Discuss with the maintainers whether the addition makes sense in [one of the core stacks](../using/selecting.md#Core-Stacks), as a [recipe in the documentation](recipes.md), as a [community stack](stacks.md), or as something else entirely.
|
||||
1. [Open a GitHub issue](https://github.com/jupyter/docker-stacks/issues) describing the feature
|
||||
you'd like to contribute.
|
||||
2. Discuss with the maintainers whether the addition makes sense in
|
||||
[one of the core stacks](../using/selecting.md#Core-Stacks), as a
|
||||
[recipe in the documentation](recipes.md), as a [community stack](stacks.md), or as something
|
||||
else entirely.
|
||||
|
||||
## Selection Criteria
|
||||
|
||||
Roughly speaking, we evaluate new features based on the following criteria:
|
||||
|
||||
* **Usefulness to Jupyter users**: Is the feature generally applicable across domains? Does it work with Jupyter Notebook, JupyterLab, JupyterHub, etc.?
|
||||
* **Fit with the image purpose**: Does the feature match the theme of the stack in which it will be added? Would it fit better in a new, community stack?
|
||||
* **Complexity of build / runtime configuration**: How many lines of code does the feature require in one of the Dockerfiles or startup scripts? Does it require new scripts entirely? Do users need to adjust how they use the images?
|
||||
* **Impact on image metrics**: How many bytes does the feature and its dependencies add to the image(s)? How many minutes do they add to the build time?
|
||||
* **Ability to support the addition**: Can existing maintainers answer user questions and address future build issues? Are the contributors interested in helping with long-term maintenance? Can we write tests to ensure the feature continues to work over time?
|
||||
- **Usefulness to Jupyter users**: Is the feature generally applicable across domains? Does it work
|
||||
with Jupyter Notebook, JupyterLab, JupyterHub, etc.?
|
||||
- **Fit with the image purpose**: Does the feature match the theme of the stack in which it will be
|
||||
added? Would it fit better in a new, community stack?
|
||||
- **Complexity of build / runtime configuration**: How many lines of code does the feature require
|
||||
in one of the Dockerfiles or startup scripts? Does it require new scripts entirely? Do users need
|
||||
to adjust how they use the images?
|
||||
- **Impact on image metrics**: How many bytes does the feature and its dependencies add to the
|
||||
image(s)? How many minutes do they add to the build time?
|
||||
- **Ability to support the addition**: Can existing maintainers answer user questions and address
|
||||
future build issues? Are the contributors interested in helping with long-term maintenance? Can we
|
||||
write tests to ensure the feature continues to work over time?
|
||||
|
||||
## Submitting a Pull Request
|
||||
|
||||
If there's agreement that the feature belongs in one or more of the core stacks:
|
||||
|
||||
1. Implement the feature in a local clone of the `jupyter/docker-stacks` project.
|
||||
2. Please build the image locally before submitting a pull request. Building the image locally shortens the debugging cycle by taking some load off [Travis CI](http://travis-ci.org/), which graciously provides free build services for open source projects like this one. If you use `make`, call:
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
```
|
||||
3. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request) (PR) with your changes.
|
||||
4. Watch for Travis to report a build success or failure for your PR on GitHub.
|
||||
2. Please build the image locally before submitting a pull request. Building the image locally
|
||||
shortens the debugging cycle by taking some load off GitHub Actions, which graciously provide
|
||||
free build services for open source projects like this one. If you use `make`, call:
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
```
|
||||
3. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request)
|
||||
(PR) with your changes.
|
||||
4. Watch for GitHub to report a build success or failure for your PR on GitHub.
|
||||
5. Discuss changes with the maintainers and address any build issues.
|
||||
|
@@ -1,29 +1,41 @@
|
||||
# Package Updates
|
||||
|
||||
We actively seek pull requests which update packages already included in the project Dockerfiles. This is a great way for first-time contributors to participate in developing the Jupyter Docker Stacks.
|
||||
We actively seek pull requests which update packages already included in the project Dockerfiles.
|
||||
This is a great way for first-time contributors to participate in developing the Jupyter Docker
|
||||
Stacks.
|
||||
|
||||
Please follow the process below to update a package version:
|
||||
|
||||
1. Locate the Dockerfile containing the library you wish to update (e.g., [base-notebook/Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/base-notebook/Dockerfile), [scipy-notebook/Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/scipy-notebook/Dockerfile))
|
||||
2. Adjust the version number for the package. We prefer to pin the major and minor version number of packages so as to minimize rebuild side-effects when users submit pull requests (PRs). For example, you'll find the Jupyter Notebook package, `notebook`, installed using conda with `notebook=5.4.*`.
|
||||
3. Please build the image locally before submitting a pull request. Building the image locally shortens the debugging cycle by taking some load off [Travis CI](http://travis-ci.org/), which graciously provides free build services for open source projects like this one. If you use `make`, call:
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
```
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request) (PR) with your changes.
|
||||
5. Watch for Travis to report a build success or failure for your PR on GitHub.
|
||||
6. Discuss changes with the maintainers and address any build issues. Version conflicts are the most common problem. You may need to upgrade additional packages to fix build failures.
|
||||
1. Locate the Dockerfile containing the library you wish to update (e.g.,
|
||||
[base-notebook/Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/base-notebook/Dockerfile),
|
||||
[scipy-notebook/Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/scipy-notebook/Dockerfile))
|
||||
2. Adjust the version number for the package. We prefer to pin the major and minor version number of
|
||||
packages so as to minimize rebuild side-effects when users submit pull requests (PRs). For
|
||||
example, you'll find the Jupyter Notebook package, `notebook`, installed using conda with
|
||||
`notebook=5.4.*`.
|
||||
3. Please build the image locally before submitting a pull request. Building the image locally
|
||||
shortens the debugging cycle by taking some load off GitHub Actions, which graciously provide
|
||||
free build services for open source projects like this one. If you use `make`, call:
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
```
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request)
|
||||
(PR) with your changes.
|
||||
5. Watch for GitHub to report a build success or failure for your PR on GitHub.
|
||||
6. Discuss changes with the maintainers and address any build issues. Version conflicts are the most
|
||||
common problem. You may need to upgrade additional packages to fix build failures.
|
||||
|
||||
## Notes
|
||||
|
||||
In order to help identifying packages that can be updated you can use the following helper tool.
|
||||
It will list all the packages installed in the `Dockerfile` that can be updated -- dependencies are filtered to focus only on requested packages.
|
||||
In order to help identifying packages that can be updated you can use the following helper tool. It
|
||||
will list all the packages installed in the `Dockerfile` that can be updated -- dependencies are
|
||||
filtered to focus only on requested packages.
|
||||
|
||||
```bash
|
||||
$ make check-outdated/base-notebook
|
||||
|
||||
# INFO test_outdated:test_outdated.py:80 3/8 (38%) packages could be updated
|
||||
# INFO test_outdated:test_outdated.py:82
|
||||
# INFO test_outdated:test_outdated.py:82
|
||||
# Package Current Newest
|
||||
# ---------- --------- --------
|
||||
# conda 4.7.12 4.8.2
|
||||
|
@@ -1,13 +1,20 @@
|
||||
# Community Stacks
|
||||
|
||||
We love to see the community create and share new Jupyter Docker images. We've put together a [cookiecutter project](https://github.com/jupyter/cookiecutter-docker-stacks) and the documentation below to help you get started defining, building, and sharing your Jupyter environments in Docker. Following these steps will:
|
||||
We love to see the community create and share new Jupyter Docker images. We've put together a
|
||||
[cookiecutter project](https://github.com/jupyter/cookiecutter-docker-stacks) and the documentation
|
||||
below to help you get started defining, building, and sharing your Jupyter environments in Docker.
|
||||
Following these steps will:
|
||||
|
||||
1. Setup a project on GitHub containing a Dockerfile based on either the `jupyter/base-notebook` or `jupyter/minimal-notebook` image.
|
||||
2. Configure Travis CI to build and test your image when users submit pull requests to your repository.
|
||||
1. Setup a project on GitHub containing a Dockerfile based on either the `jupyter/base-notebook` or
|
||||
`jupyter/minimal-notebook` image.
|
||||
2. Configure GitHub Actions to build and test your image when users submit pull requests to your
|
||||
repository.
|
||||
3. Configure Docker Cloud to build and host your images for others to use.
|
||||
4. Update the [list of community stacks](../using/selecting.html#community-stacks) in this documentation to include your image.
|
||||
4. Update the [list of community stacks](../using/selecting.html#community-stacks) in this
|
||||
documentation to include your image.
|
||||
|
||||
This approach mirrors how we build and share the core stack images. Feel free to follow it or pave your own path using alternative services and build tools.
|
||||
This approach mirrors how we build and share the core stack images. Feel free to follow it or pave
|
||||
your own path using alternative services and build tools.
|
||||
|
||||
## Creating a Project
|
||||
|
||||
@@ -17,29 +24,31 @@ First, install [cookiecutter](https://github.com/audreyr/cookiecutter) using pip
|
||||
pip install cookiecutter # or conda install cookiecutter
|
||||
```
|
||||
|
||||
Run the cookiecutter command pointing to the [jupyter/cookiecutter-docker-stacks](https://github.com/jupyter/cookiecutter-docker-stacks) project on GitHub.
|
||||
Run the cookiecutter command pointing to the
|
||||
[jupyter/cookiecutter-docker-stacks](https://github.com/jupyter/cookiecutter-docker-stacks) project
|
||||
on GitHub.
|
||||
|
||||
```bash
|
||||
cookiecutter https://github.com/jupyter/cookiecutter-docker-stacks.git
|
||||
```
|
||||
|
||||
Enter a name for your new stack image. This will serve as both the git repository
|
||||
name and the part of the Docker image name after the slash.
|
||||
Enter a name for your new stack image. This will serve as both the git repository name and the part
|
||||
of the Docker image name after the slash.
|
||||
|
||||
```
|
||||
stack_name [my-jupyter-stack]:
|
||||
```
|
||||
|
||||
Enter the user or organization name under which this stack will reside on
|
||||
Docker Cloud / Hub. You must have access to manage this Docker Cloud org in
|
||||
order to push images here and setup automated builds.
|
||||
Enter the user or organization name under which this stack will reside on Docker Cloud / Hub. You
|
||||
must have access to manage this Docker Cloud org in order to push images here and setup automated
|
||||
builds.
|
||||
|
||||
```
|
||||
stack_org [my-project]:
|
||||
```
|
||||
|
||||
Select an image from the jupyter/docker-stacks project that will serve as the
|
||||
base for your new image.
|
||||
Select an image from the jupyter/docker-stacks project that will serve as the base for your new
|
||||
image.
|
||||
|
||||
```
|
||||
stack_base_image [jupyter/base-notebook]:
|
||||
@@ -65,47 +74,66 @@ git push -u origin master
|
||||
|
||||
## Configuring Travis
|
||||
|
||||
Next, link your GitHub project to Travis CI to build your Docker image whenever you or someone else submits a pull request.
|
||||
> NOTE: This section and the cookiecutter template should be updated to describe using GitHub
|
||||
> Actions now that jupyter/docker-stacks uses that service.
|
||||
|
||||
1. Visit [https://docs.travis-ci.com/user/getting-started/#To-get-started-with-Travis-CI](https://docs.travis-ci.com/user/getting-started/#To-get-started-with-Travis-CI) and follow the instructions to add the Travis CI application to your GitHub account.
|
||||
3. Visit [https://travis-ci.org](https://travis-ci.org).
|
||||
4. Click the + symbol at the top of the left sidebar.
|
||||

|
||||
5. Locate your project repository either in your primary user account or in one of the organizations to which you belong.
|
||||
6. Click the toggle to enable builds for the project repository.
|
||||
7. Click the **Settings** button for that repository.
|
||||

|
||||
8. Enable **Build only if .travis.yml is present** and **Build pushed pull requests**.
|
||||

|
||||
9. Disable **Build pushed branches**.
|
||||
Next, link your GitHub project to Travis CI to build your Docker image whenever you or someone else
|
||||
submits a pull request.
|
||||
|
||||
1. Visit
|
||||
[https://docs.travis-ci.com/user/getting-started/#To-get-started-with-Travis-CI](https://docs.travis-ci.com/user/getting-started/#To-get-started-with-Travis-CI)
|
||||
and follow the instructions to add the Travis CI application to your GitHub account.
|
||||
2. Visit [https://travis-ci.org](https://travis-ci.org).
|
||||
3. Click the + symbol at the top of the left sidebar.
|
||||

|
||||
4. Locate your project repository either in your primary user account or in one of the organizations
|
||||
to which you belong.
|
||||
5. Click the toggle to enable builds for the project repository.
|
||||
6. Click the **Settings** button for that repository.
|
||||

|
||||
7. Enable **Build only if .travis.yml is present** and **Build pushed pull requests**.
|
||||

|
||||
8. Disable **Build pushed branches**.
|
||||
|
||||
## Configuring Docker Cloud
|
||||
|
||||
Now, configure Docker Cloud to build your stack image and push it to Docker Hub repository whenever you merge a GitHub pull request to the master branch of your project.
|
||||
Now, configure Docker Cloud to build your stack image and push it to Docker Hub repository whenever
|
||||
you merge a GitHub pull request to the master branch of your project.
|
||||
|
||||
1. Visit [https://cloud.docker.com/](https://cloud.docker.com/) and login.
|
||||
2. Select the account or organization matching the one you entered when prompted with `stack_org` by the cookiecutter.
|
||||

|
||||
2. Select the account or organization matching the one you entered when prompted with `stack_org` by
|
||||
the cookiecutter. 
|
||||
3. Scroll to the bottom of the page and click **Create repository**.
|
||||
4. Enter the name of the image matching the one you entered when prompted with `stack_name` by the cookiecutter.
|
||||

|
||||
4. Enter the name of the image matching the one you entered when prompted with `stack_name` by the
|
||||
cookiecutter. 
|
||||
5. Enter a description for your image.
|
||||
6. Click **GitHub** under the **Build Settings** and follow the prompts to connect your account if it is not already connected.
|
||||
7. Select the GitHub organization and repository containing your image definition from the dropdowns.
|
||||

|
||||
6. Click **GitHub** under the **Build Settings** and follow the prompts to connect your account if
|
||||
it is not already connected.
|
||||
7. Select the GitHub organization and repository containing your image definition from the
|
||||
dropdowns.
|
||||

|
||||
8. Click the **Create and Build** button.
|
||||
|
||||
## Defining Your Image
|
||||
|
||||
Make edits the Dockerfile in your project to add third-party libraries and configure Jupyter applications. Refer to the Dockerfiles for the core stacks (e.g., [jupyter/datascience-notebook](https://github.com/jupyter/docker-stacks/blob/master/datascience-notebook/Dockerfile)) to get a feel for what's possible and best practices.
|
||||
Make edits the Dockerfile in your project to add third-party libraries and configure Jupyter
|
||||
applications. Refer to the Dockerfiles for the core stacks (e.g.,
|
||||
[jupyter/datascience-notebook](https://github.com/jupyter/docker-stacks/blob/master/datascience-notebook/Dockerfile))
|
||||
to get a feel for what's possible and best practices.
|
||||
|
||||
[Submit pull requests](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request) to your project repository on GitHub. Ensure your image builds properly on Travis before merging to master. Refer to Docker Cloud for builds of your master branch that you can `docker pull`.
|
||||
[Submit pull requests](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request)
|
||||
to your project repository on GitHub. Ensure your image builds properly on Travis before merging to
|
||||
master. Refer to Docker Cloud for builds of your master branch that you can `docker pull`.
|
||||
|
||||
## Sharing Your Image
|
||||
|
||||
Finally, if you'd like to add a link to your project to this documentation site, please do the following:
|
||||
Finally, if you'd like to add a link to your project to this documentation site, please do the
|
||||
following:
|
||||
|
||||
1. Clone ths [jupyter/docker-stacks](https://github.com/jupyter/docker-stacks) GitHub repository.
|
||||
2. Open the `docs/using/selecting.md` source file and locate the **Community Stacks** section.
|
||||
3. Add a bullet with a link to your project and a short description of what your Docker image contains.
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request) (PR) with your changes. Maintainers will respond and work with you to address any formatting or content issues.
|
||||
3. Add a bullet with a link to your project and a short description of what your Docker image
|
||||
contains.
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request)
|
||||
(PR) with your changes. Maintainers will respond and work with you to address any formatting or
|
||||
content issues.
|
||||
|
@@ -1,22 +1,33 @@
|
||||
# Image Tests
|
||||
|
||||
We greatly appreciate pull requests that extend the automated tests that vet the basic functionality of the Docker images.
|
||||
We greatly appreciate pull requests that extend the automated tests that vet the basic functionality
|
||||
of the Docker images.
|
||||
|
||||
## How the Tests Work
|
||||
|
||||
Travis executes `make build-test-all` against pull requests submitted to the `jupyter/docker-stacks` repository. This `make` command builds every docker image. After building each image, the `make` command executes `pytest` to run both image-specific tests like those in [base-notebook/test/](https://github.com/jupyter/docker-stacks/tree/master/base-notebook/test) and common tests defined in [test/](https://github.com/jupyter/docker-stacks/tree/master/test). Both kinds of tests make use of global [pytest fixtures](https://docs.pytest.org/en/latest/fixture.html) defined in the [conftest.py](https://github.com/jupyter/docker-stacks/blob/master/conftest.py) file at the root of the projects.
|
||||
GitHub executes `make build-test-all` against pull requests submitted to the `jupyter/docker-stacks`
|
||||
repository. This `make` command builds every docker image. After building each image, the `make`
|
||||
command executes `pytest` to run both image-specific tests like those in
|
||||
[base-notebook/test/](https://github.com/jupyter/docker-stacks/tree/master/base-notebook/test) and
|
||||
common tests defined in [test/](https://github.com/jupyter/docker-stacks/tree/master/test). Both
|
||||
kinds of tests make use of global [pytest fixtures](https://docs.pytest.org/en/latest/fixture.html)
|
||||
defined in the [conftest.py](https://github.com/jupyter/docker-stacks/blob/master/conftest.py) file
|
||||
at the root of the projects.
|
||||
|
||||
## Contributing New Tests
|
||||
|
||||
Please follow the process below to add new tests:
|
||||
|
||||
1. If the test should run against every image built, add your test code to one of the modules in [test/](https://github.com/jupyter/docker-stacks/tree/master/test) or create a new module.
|
||||
2. If your test should run against a single image, add your test code to one of the modules in `some-notebook/test/` or create a new module.
|
||||
1. If the test should run against every image built, add your test code to one of the modules in
|
||||
[test/](https://github.com/jupyter/docker-stacks/tree/master/test) or create a new module.
|
||||
2. If your test should run against a single image, add your test code to one of the modules in
|
||||
`some-notebook/test/` or create a new module.
|
||||
3. Build one or more images you intend to test and run the tests locally. If you use `make`, call:
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
make test/somestack-notebook
|
||||
```
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request) (PR) with your changes.
|
||||
5. Watch for Travis to report a build success or failure for your PR on GitHub.
|
||||
6. Discuss changes with the maintainers and address any issues running the tests on Travis.
|
||||
```bash
|
||||
make build/somestack-notebook
|
||||
make test/somestack-notebook
|
||||
```
|
||||
4. [Submit a pull request](https://github.com/PointCloudLibrary/pcl/wiki/A-step-by-step-guide-on-preparing-and-submitting-a-pull-request)
|
||||
(PR) with your changes.
|
||||
5. Watch for GitHub to report a build success or failure for your PR on GitHub.
|
||||
6. Discuss changes with the maintainers and address any issues running the tests on GitHub.
|
||||
|
@@ -4,41 +4,61 @@
|
||||
|
||||
To build new images on Docker Cloud and publish them to the Docker Hub registry, do the following:
|
||||
|
||||
1. Make sure Travis is green for a PR.
|
||||
1. Make sure GitHub Actions status checks pas for the PR.
|
||||
2. Merge the PR.
|
||||
3. Monitor the Docker Cloud build status for each of the stacks, starting with [jupyter/base-notebook](https://cloud.docker.com/app/jupyter/repository/docker/jupyter/base-notebook/general) and ending with [jupyter/all-spark-notebook](https://cloud.docker.com/app/jupyter/repository/docker/jupyter/all-spark-notebook/general). See the [stack hierarchy diagram](../using/selecting.html#image-relationships) for the current, complete build order.
|
||||
4. Manually click the retry button next to any build that fails to resume that build and any dependent builds.
|
||||
5. Try to avoid merging another PR to master until all outstanding builds complete. There's no way at present to propagate the git SHA to build through the Docker Cloud build trigger API. Every build trigger works off of master HEAD.
|
||||
3. Monitor the Docker Cloud build status for each of the stacks, starting with
|
||||
[jupyter/base-notebook](https://cloud.docker.com/app/jupyter/repository/docker/jupyter/base-notebook/general)
|
||||
and ending with
|
||||
[jupyter/all-spark-notebook](https://cloud.docker.com/app/jupyter/repository/docker/jupyter/all-spark-notebook/general).
|
||||
See the [stack hierarchy diagram](../using/selecting.html#image-relationships) for the current,
|
||||
complete build order.
|
||||
4. Manually click the retry button next to any build that fails to resume that build and any
|
||||
dependent builds.
|
||||
5. Try to avoid merging another PR to master until all outstanding builds complete. There's no way
|
||||
at present to propagate the git SHA to build through the Docker Cloud build trigger API. Every
|
||||
build trigger works off of master HEAD.
|
||||
|
||||
## Updating the Ubuntu Base Image
|
||||
|
||||
When there's a security fix in the Ubuntu base image or after some time passes, it's a good idea to update the pinned SHA in the [jupyter/base-notebook Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/base-notebook/Dockerfile). Submit it as a regular PR and go through the build process. Expect the build to take a while to complete: every image layer will rebuild.
|
||||
When there's a security fix in the Ubuntu base image or after some time passes, it's a good idea to
|
||||
update the pinned SHA in the
|
||||
[jupyter/base-notebook Dockerfile](https://github.com/jupyter/docker-stacks/blob/master/base-notebook/Dockerfile).
|
||||
Submit it as a regular PR and go through the build process. Expect the build to take a while to
|
||||
complete: every image layer will rebuild.
|
||||
|
||||
## Adding a New Core Image to Docker Cloud
|
||||
|
||||
When there's a new stack definition, do the following before merging the PR with the new stack:
|
||||
|
||||
1. Ensure the PR includes an update to the stack overview diagram [in the documentation](https://github.com/jupyter/docker-stacks/blob/master/docs/using/selecting.md#image-relationships). The image links to the [blockdiag source](http://interactive.blockdiag.com/) used to create it.
|
||||
2. Ensure the PR updates the Makefile which is used to build the stacks in order on Travis CI.
|
||||
3. Create a new repository in the `jupyter` org on Docker Cloud named after the stack folder in the git repo.
|
||||
1. Ensure the PR includes an update to the stack overview diagram
|
||||
[in the documentation](https://github.com/jupyter/docker-stacks/blob/master/docs/using/selecting.md#image-relationships).
|
||||
The image links to the [blockdiag source](http://interactive.blockdiag.com/) used to create it.
|
||||
2. Ensure the PR updates the Makefile which is used to build the stacks in order on GitHub Actions.
|
||||
3. Create a new repository in the `jupyter` org on Docker Cloud named after the stack folder in the
|
||||
git repo.
|
||||
4. Grant the `stacks` team permission to write to the repo.
|
||||
5. Click *Builds* and then *Configure Automated Builds* for the repository.
|
||||
5. Click _Builds_ and then _Configure Automated Builds_ for the repository.
|
||||
6. Select `jupyter/docker-stacks` as the source repository.
|
||||
7. Choose *Build on Docker Cloud's infrastructure using a Small node* unless you have reason to believe a bigger host is required.
|
||||
8. Update the *Build Context* in the default build rule to be `/<name-of-the-stack>`.
|
||||
9. Toggle *Autobuild* to disabled unless the stack is a new root stack (e.g., like `jupyter/base-notebook`).
|
||||
7. Choose _Build on Docker Cloud's infrastructure using a Small node_ unless you have reason to
|
||||
believe a bigger host is required.
|
||||
8. Update the _Build Context_ in the default build rule to be `/<name-of-the-stack>`.
|
||||
9. Toggle _Autobuild_ to disabled unless the stack is a new root stack (e.g., like
|
||||
`jupyter/base-notebook`).
|
||||
10. If the new stack depends on the build of another stack in the hierarchy:
|
||||
1. Hit *Save* and then click *Configure Automated Builds*.
|
||||
2. At the very bottom, add a build trigger named *Stack hierarchy trigger*.
|
||||
1. Hit _Save_ and then click _Configure Automated Builds_.
|
||||
2. At the very bottom, add a build trigger named _Stack hierarchy trigger_.
|
||||
3. Copy the build trigger URL.
|
||||
4. Visit the parent repository *Builds* page and click *Configure Automated Builds*.
|
||||
5. Add the URL you copied to the *NEXT_BUILD_TRIGGERS* environment variable comma separated list of URLs, creating that environment variable if it does not already exist.
|
||||
6. Hit *Save*.
|
||||
4. Visit the parent repository _Builds_ page and click _Configure Automated Builds_.
|
||||
5. Add the URL you copied to the _NEXT_BUILD_TRIGGERS_ environment variable comma separated list
|
||||
of URLs, creating that environment variable if it does not already exist.
|
||||
6. Hit _Save_.
|
||||
11. If the new stack should trigger other dependent builds:
|
||||
1. Add an environment variable named *NEXT_BUILD_TRIGGERS*.
|
||||
2. Copy the build trigger URLs from the dependent builds into the *NEXT_BUILD_TRIGGERS* comma separated list of URLs.
|
||||
3. Hit *Save*.
|
||||
12. Adjust other *NEXT_BUILD_TRIGGERS* values as needed so that the build order matches that in the stack hierarchy diagram.
|
||||
1. Add an environment variable named _NEXT_BUILD_TRIGGERS_.
|
||||
2. Copy the build trigger URLs from the dependent builds into the _NEXT_BUILD_TRIGGERS_ comma
|
||||
separated list of URLs.
|
||||
3. Hit _Save_.
|
||||
12. Adjust other _NEXT_BUILD_TRIGGERS_ values as needed so that the build order matches that in the
|
||||
stack hierarchy diagram.
|
||||
|
||||
## Adding a New Maintainer Account
|
||||
|
||||
@@ -61,22 +81,22 @@ If automated builds on Docker Cloud have got you down, do the following to push
|
||||
First enable translation on Transifex:
|
||||
|
||||
1. Visit https://www.transifex.com/project-jupyter/jupyter-docker-stacks-1/languages/
|
||||
2. Click *Edit Languages* in the top right.
|
||||
2. Click _Edit Languages_ in the top right.
|
||||
3. Select the language from the dropdown.
|
||||
4. Click *Apply*.
|
||||
4. Click _Apply_.
|
||||
|
||||
Then setup a subproject on ReadTheDocs for the language:
|
||||
|
||||
1. Visit https://readthedocs.org/dashboard/import/manual/
|
||||
2. Enter *jupyter-docker-stacks-language_abbreviation* for the project name.
|
||||
2. Enter _jupyter-docker-stacks-language_abbreviation_ for the project name.
|
||||
3. Enter https://github.com/jupyter/docker-stacks for the URL.
|
||||
4. Check *Edit advanced project options*.
|
||||
5. Click *Next*.
|
||||
6. Select the *Language* from the dropdown on the next screen.
|
||||
7. Click *Finish*.
|
||||
4. Check _Edit advanced project options_.
|
||||
5. Click _Next_.
|
||||
6. Select the _Language_ from the dropdown on the next screen.
|
||||
7. Click _Finish_.
|
||||
|
||||
Finally link the new language subproject to the top level doc project:
|
||||
|
||||
1. Visit https://readthedocs.org/dashboard/jupyter-docker-stacks/translations/
|
||||
2. Select the subproject you created from the *Project* dropdown.
|
||||
3. Click *Add*.
|
||||
2. Select the subproject you created from the _Project_ dropdown.
|
||||
3. Click _Add_.
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# Selecting an Image
|
||||
|
||||
* [Core Stacks](#core-stacks)
|
||||
* [Image Relationships](#image-relationships)
|
||||
* [Community Stacks](#community-stacks)
|
||||
- [Core Stacks](#core-stacks)
|
||||
- [Image Relationships](#image-relationships)
|
||||
- [Community Stacks](#community-stacks)
|
||||
|
||||
Using one of the Jupyter Docker Stacks requires two choices:
|
||||
|
||||
@@ -13,193 +13,238 @@ This section provides details about the first.
|
||||
|
||||
## Core Stacks
|
||||
|
||||
The Jupyter team maintains a set of Docker image definitions in the [https://github.com/jupyter/docker-stacks](https://github.com/jupyter/docker-stacks) GitHub
|
||||
repository. The following sections describe these images including their contents, relationships, and versioning strategy.
|
||||
The Jupyter team maintains a set of Docker image definitions in the
|
||||
[https://github.com/jupyter/docker-stacks](https://github.com/jupyter/docker-stacks) GitHub
|
||||
repository. The following sections describe these images including their contents, relationships,
|
||||
and versioning strategy.
|
||||
|
||||
### jupyter/base-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/base-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/base-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/base-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/base-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/base-notebook/tags/)
|
||||
|
||||
`jupyter/base-notebook` is a small image supporting the [options common across all core stacks](common.md). It is the basis for all other stacks.
|
||||
`jupyter/base-notebook` is a small image supporting the
|
||||
[options common across all core stacks](common.md). It is the basis for all other stacks.
|
||||
|
||||
* Minimally-functional Jupyter Notebook server (e.g., no LaTeX support for saving notebooks as PDFs)
|
||||
* [Miniconda](https://conda.io/miniconda.html) Python 3.x in `/opt/conda`
|
||||
* No preinstalled scientific computing packages
|
||||
* Unprivileged user `jovyan` (`uid=1000`, configurable, see options) in group `users` (`gid=100`) with ownership over the `/home/jovyan` and `/opt/conda` paths
|
||||
* `tini` as the container entrypoint and a `start-notebook.sh` script as the default command
|
||||
* A `start-singleuser.sh` script useful for launching containers in JupyterHub
|
||||
* A `start.sh` script useful for running alternative commands in the container (e.g. `ipython`, `jupyter kernelgateway`, `jupyter lab`)
|
||||
* Options for a self-signed HTTPS certificate and passwordless sudo
|
||||
- Minimally-functional Jupyter Notebook server (e.g., no LaTeX support for saving notebooks as PDFs)
|
||||
- [Miniconda](https://conda.io/miniconda.html) Python 3.x in `/opt/conda`
|
||||
- No preinstalled scientific computing packages
|
||||
- Unprivileged user `jovyan` (`uid=1000`, configurable, see options) in group `users` (`gid=100`)
|
||||
with ownership over the `/home/jovyan` and `/opt/conda` paths
|
||||
- `tini` as the container entrypoint and a `start-notebook.sh` script as the default command
|
||||
- A `start-singleuser.sh` script useful for launching containers in JupyterHub
|
||||
- A `start.sh` script useful for running alternative commands in the container (e.g. `ipython`,
|
||||
`jupyter kernelgateway`, `jupyter lab`)
|
||||
- Options for a self-signed HTTPS certificate and passwordless sudo
|
||||
|
||||
### jupyter/minimal-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/minimal-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/minimal-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/minimal-notebook/tags/)
|
||||
|
||||
`jupyter/minimal-notebook` adds command line tools useful when working in Jupyter applications.
|
||||
|
||||
* Everything in `jupyter/base-notebook`
|
||||
* [TeX Live](https://www.tug.org/texlive/) for notebook document conversion
|
||||
* [git](https://git-scm.com/), [emacs](https://www.gnu.org/software/emacs/) (actually `emacs-nox`), [vi](https://vim.org/) (actually `vim-tiny`), [jed](https://www.jedsoft.org/jed/), [nano](https://www.nano-editor.org/), tzdata, and unzip
|
||||
- Everything in `jupyter/base-notebook`
|
||||
- [TeX Live](https://www.tug.org/texlive/) for notebook document conversion
|
||||
- [git](https://git-scm.com/), [emacs](https://www.gnu.org/software/emacs/) (actually `emacs-nox`),
|
||||
[vi](https://vim.org/) (actually `vim-tiny`), [jed](https://www.jedsoft.org/jed/),
|
||||
[nano](https://www.nano-editor.org/), tzdata, and unzip
|
||||
|
||||
### jupyter/r-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/r-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/r-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/r-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/r-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/r-notebook/tags/)
|
||||
|
||||
`jupyter/r-notebook` includes popular packages from the R ecosystem.
|
||||
|
||||
* Everything in `jupyter/minimal-notebook` and its ancestor images
|
||||
* The [R](https://www.r-project.org/) interpreter and base environment
|
||||
* [IRKernel](https://irkernel.github.io/) to support R code in Jupyter notebooks
|
||||
* [tidyverse](https://www.tidyverse.org/) packages, including [ggplot2](http://ggplot2.org/), [dplyr](http://dplyr.tidyverse.org/),
|
||||
[tidyr](http://tidyr.tidyverse.org/), [readr](http://readr.tidyverse.org/), [purrr](http://purrr.tidyverse.org/), [tibble](http://tibble.tidyverse.org/),
|
||||
[stringr](http://stringr.tidyverse.org/), [lubridate](http://lubridate.tidyverse.org/), and
|
||||
[broom](https://cran.r-project.org/web/packages/broom/vignettes/broom.html) from [conda-forge](https://conda-forge.github.io/feedstocks)
|
||||
* [devtools](https://cran.r-project.org/web/packages/devtools/index.html),
|
||||
[shiny](https://shiny.rstudio.com/), [rmarkdown](http://rmarkdown.rstudio.com/), [forecast](https://cran.r-project.org/web/packages/forecast/forecast.pdf),
|
||||
[rsqlite](https://cran.r-project.org/web/packages/RSQLite/index.html),
|
||||
[nycflights13](https://cran.r-project.org/web/packages/nycflights13/index.html), [caret](http://topepo.github.io/caret/index.html), [tidymodels](https://www.tidymodels.org/),
|
||||
[rcurl](https://cran.r-project.org/web/packages/RCurl/index.html), and [randomforest](https://cran.r-project.org/web/packages/randomForest/randomForest.pdf)
|
||||
packages from [conda-forge](https://conda-forge.github.io/feedstocks)
|
||||
- Everything in `jupyter/minimal-notebook` and its ancestor images
|
||||
- The [R](https://www.r-project.org/) interpreter and base environment
|
||||
- [IRKernel](https://irkernel.github.io/) to support R code in Jupyter notebooks
|
||||
- [tidyverse](https://www.tidyverse.org/) packages, including [ggplot2](http://ggplot2.org/),
|
||||
[dplyr](http://dplyr.tidyverse.org/), [tidyr](http://tidyr.tidyverse.org/),
|
||||
[readr](http://readr.tidyverse.org/), [purrr](http://purrr.tidyverse.org/),
|
||||
[tibble](http://tibble.tidyverse.org/), [stringr](http://stringr.tidyverse.org/),
|
||||
[lubridate](http://lubridate.tidyverse.org/), and
|
||||
[broom](https://cran.r-project.org/web/packages/broom/vignettes/broom.html) from
|
||||
[conda-forge](https://conda-forge.github.io/feedstocks)
|
||||
- [devtools](https://cran.r-project.org/web/packages/devtools/index.html),
|
||||
[shiny](https://shiny.rstudio.com/), [rmarkdown](http://rmarkdown.rstudio.com/),
|
||||
[forecast](https://cran.r-project.org/web/packages/forecast/forecast.pdf),
|
||||
[rsqlite](https://cran.r-project.org/web/packages/RSQLite/index.html),
|
||||
[nycflights13](https://cran.r-project.org/web/packages/nycflights13/index.html),
|
||||
[caret](http://topepo.github.io/caret/index.html), [tidymodels](https://www.tidymodels.org/),
|
||||
[rcurl](https://cran.r-project.org/web/packages/RCurl/index.html), and
|
||||
[randomforest](https://cran.r-project.org/web/packages/randomForest/randomForest.pdf) packages
|
||||
from [conda-forge](https://conda-forge.github.io/feedstocks)
|
||||
|
||||
### jupyter/scipy-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/scipy-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/scipy-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/scipy-notebook/tags/)
|
||||
|
||||
`jupyter/scipy-notebook` includes popular packages from the scientific Python ecosystem.
|
||||
|
||||
* Everything in `jupyter/minimal-notebook` and its ancestor images
|
||||
* [dask](https://dask.org/), [pandas](https://pandas.pydata.org/), [numexpr](https://github.com/pydata/numexpr), [matplotlib](https://matplotlib.org/), [scipy](https://www.scipy.org/),
|
||||
[seaborn](https://seaborn.pydata.org/), [scikit-learn](http://scikit-learn.org/stable/), [scikit-image](http://scikit-image.org/),
|
||||
[sympy](http://www.sympy.org/en/index.html), [cython](http://cython.org/), [patsy](https://patsy.readthedocs.io/en/latest/),
|
||||
[statsmodel](http://www.statsmodels.org/stable/index.html), [cloudpickle](https://github.com/cloudpipe/cloudpickle), [dill](https://pypi.python.org/pypi/dill),
|
||||
[numba](https://numba.pydata.org/), [bokeh](https://bokeh.pydata.org/en/latest/), [sqlalchemy](https://www.sqlalchemy.org/), [hdf5](http://www.h5py.org/),
|
||||
[vincent](http://vincent.readthedocs.io/en/latest/), [beautifulsoup](https://www.crummy.com/software/BeautifulSoup/),
|
||||
[protobuf](https://developers.google.com/protocol-buffers/docs/pythontutorial), [xlrd](http://www.python-excel.org/), [bottleneck](https://bottleneck.readthedocs.io/en/latest/), and [pytables](https://www.pytables.org/) packages
|
||||
* [ipywidgets](https://ipywidgets.readthedocs.io/en/stable/) and [ipympl](https://github.com/matplotlib/jupyter-matplotlib) for interactive visualizations and plots in Python notebooks
|
||||
* [Facets](https://github.com/PAIR-code/facets) for visualizing machine learning datasets
|
||||
- Everything in `jupyter/minimal-notebook` and its ancestor images
|
||||
- [dask](https://dask.org/), [pandas](https://pandas.pydata.org/),
|
||||
[numexpr](https://github.com/pydata/numexpr), [matplotlib](https://matplotlib.org/),
|
||||
[scipy](https://www.scipy.org/), [seaborn](https://seaborn.pydata.org/),
|
||||
[scikit-learn](http://scikit-learn.org/stable/), [scikit-image](http://scikit-image.org/),
|
||||
[sympy](http://www.sympy.org/en/index.html), [cython](http://cython.org/),
|
||||
[patsy](https://patsy.readthedocs.io/en/latest/),
|
||||
[statsmodel](http://www.statsmodels.org/stable/index.html),
|
||||
[cloudpickle](https://github.com/cloudpipe/cloudpickle),
|
||||
[dill](https://pypi.python.org/pypi/dill), [numba](https://numba.pydata.org/),
|
||||
[bokeh](https://bokeh.pydata.org/en/latest/), [sqlalchemy](https://www.sqlalchemy.org/),
|
||||
[hdf5](http://www.h5py.org/), [vincent](http://vincent.readthedocs.io/en/latest/),
|
||||
[beautifulsoup](https://www.crummy.com/software/BeautifulSoup/),
|
||||
[protobuf](https://developers.google.com/protocol-buffers/docs/pythontutorial),
|
||||
[xlrd](http://www.python-excel.org/), [bottleneck](https://bottleneck.readthedocs.io/en/latest/),
|
||||
and [pytables](https://www.pytables.org/) packages
|
||||
- [ipywidgets](https://ipywidgets.readthedocs.io/en/stable/) and
|
||||
[ipympl](https://github.com/matplotlib/jupyter-matplotlib) for interactive visualizations and
|
||||
plots in Python notebooks
|
||||
- [Facets](https://github.com/PAIR-code/facets) for visualizing machine learning datasets
|
||||
|
||||
### jupyter/tensorflow-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/tensorflow-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/tensorflow-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/tensorflow-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/tensorflow-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/tensorflow-notebook/tags/)
|
||||
|
||||
`jupyter/tensorflow-notebook` includes popular Python deep learning libraries.
|
||||
|
||||
* Everything in `jupyter/scipy-notebook` and its ancestor images
|
||||
* [tensorflow](https://www.tensorflow.org/) and [keras](https://keras.io/) machine learning libraries
|
||||
- Everything in `jupyter/scipy-notebook` and its ancestor images
|
||||
- [tensorflow](https://www.tensorflow.org/) and [keras](https://keras.io/) machine learning
|
||||
libraries
|
||||
|
||||
### jupyter/datascience-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/datascience-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/datascience-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/datascience-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/datascience-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/datascience-notebook/tags/)
|
||||
|
||||
`jupyter/datascience-notebook` includes libraries for data analysis from the Julia, Python, and R communities.
|
||||
`jupyter/datascience-notebook` includes libraries for data analysis from the Julia, Python, and R
|
||||
communities.
|
||||
|
||||
* Everything in the `jupyter/scipy-notebook` and `jupyter/r-notebook` images, and their ancestor images
|
||||
* The [Julia](https://julialang.org/) compiler and base environment
|
||||
* [IJulia](https://github.com/JuliaLang/IJulia.jl) to support Julia code in Jupyter notebooks
|
||||
* [HDF5](https://github.com/JuliaIO/HDF5.jl), [Gadfly](http://gadflyjl.org/stable/), and [RDatasets](https://github.com/johnmyleswhite/RDatasets.jl) packages
|
||||
- Everything in the `jupyter/scipy-notebook` and `jupyter/r-notebook` images, and their ancestor
|
||||
images
|
||||
- The [Julia](https://julialang.org/) compiler and base environment
|
||||
- [IJulia](https://github.com/JuliaLang/IJulia.jl) to support Julia code in Jupyter notebooks
|
||||
- [HDF5](https://github.com/JuliaIO/HDF5.jl), [Gadfly](http://gadflyjl.org/stable/), and
|
||||
[RDatasets](https://github.com/johnmyleswhite/RDatasets.jl) packages
|
||||
|
||||
### jupyter/pyspark-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/pyspark-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/pyspark-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/pyspark-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/pyspark-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/pyspark-notebook/tags/)
|
||||
|
||||
`jupyter/pyspark-notebook` includes Python support for Apache Spark.
|
||||
|
||||
* Everything in `jupyter/scipy-notebook` and its ancestor images
|
||||
* [Apache Spark](https://spark.apache.org/) with Hadoop binaries
|
||||
- Everything in `jupyter/scipy-notebook` and its ancestor images
|
||||
- [Apache Spark](https://spark.apache.org/) with Hadoop binaries
|
||||
|
||||
### jupyter/all-spark-notebook
|
||||
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/all-spark-notebook/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jupyter/docker-stacks/commits/master/all-spark-notebook/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/jupyter/all-spark-notebook/tags/)
|
||||
|
||||
`jupyter/all-spark-notebook` includes Python, R, and Scala support for Apache Spark.
|
||||
|
||||
* Everything in `jupyter/pyspark-notebook` and its ancestor images
|
||||
* [IRKernel](https://irkernel.github.io/) to support R code in Jupyter notebooks
|
||||
* [Apache Toree](https://toree.apache.org/) and [spylon-kernel](https://github.com/maxpoint/spylon-kernel) to support Scala code in Jupyter notebooks
|
||||
* [ggplot2](http://ggplot2.org/), [sparklyr](http://spark.rstudio.com/), and [rcurl](https://cran.r-project.org/web/packages/RCurl/index.html) packages
|
||||
- Everything in `jupyter/pyspark-notebook` and its ancestor images
|
||||
- [IRKernel](https://irkernel.github.io/) to support R code in Jupyter notebooks
|
||||
- [Apache Toree](https://toree.apache.org/) and
|
||||
[spylon-kernel](https://github.com/maxpoint/spylon-kernel) to support Scala code in Jupyter
|
||||
notebooks
|
||||
- [ggplot2](http://ggplot2.org/), [sparklyr](http://spark.rstudio.com/), and
|
||||
[rcurl](https://cran.r-project.org/web/packages/RCurl/index.html) packages
|
||||
|
||||
### Image Relationships
|
||||
|
||||
The following diagram depicts the build dependency tree of the core images. (i.e., the `FROM` statements in their Dockerfiles). Any given image inherits the
|
||||
complete content of all ancestor images pointing to it.
|
||||
The following diagram depicts the build dependency tree of the core images. (i.e., the `FROM`
|
||||
statements in their Dockerfiles). Any given image inherits the complete content of all ancestor
|
||||
images pointing to it.
|
||||
|
||||
[](http://interactive.blockdiag.com/?compression=deflate&src=eJyFzTEPgjAQhuHdX9Gws5sQjGzujsaYKxzmQrlr2msMGv-71K0srO_3XGud9NNA8DSfgzESCFlBSdi0xkvQAKTNugw4QnL6GIU10hvX-Zh7Z24OLLq2SjaxpvP10lX35vCf6pOxELFmUbQiUz4oQhYzMc3gCrRt2cWe_FKosmSjyFHC6OS1AwdQWCtyj7sfh523_BI9hKlQ25YdOFdv5fcH0kiEMA)
|
||||
|
||||
### Builds
|
||||
|
||||
Pull requests to the `jupyter/docker-stacks` repository trigger builds of all images on Travis CI. These images are for testing purposes only and are not saved for
|
||||
use. When pull requests merge to master, all images rebuild on Docker Cloud and become available to `docker pull` from Docker Hub.
|
||||
Pull requests to the `jupyter/docker-stacks` repository trigger builds of all images on GitHub
|
||||
Actions. These images are for testing purposes only and are not saved for use. When pull requests
|
||||
merge to master, all images rebuild on Docker Cloud and become available to `docker pull` from
|
||||
Docker Hub.
|
||||
|
||||
### Versioning
|
||||
|
||||
The `latest` tag in each Docker Hub repository tracks the master branch `HEAD` reference on GitHub. `latest` is a moving target, by definition, and will have
|
||||
backward-incompatible changes regularly.
|
||||
The `latest` tag in each Docker Hub repository tracks the master branch `HEAD` reference on GitHub.
|
||||
`latest` is a moving target, by definition, and will have backward-incompatible changes regularly.
|
||||
|
||||
Every image on Docker Hub also receives a 12-character tag which corresponds with the git commit SHA that triggered the image build. You can inspect the state of
|
||||
the `jupyter/docker-stacks` repository for that commit to review the definition of the image (e.g., images with tag 7c45ec67c8e7 were built from
|
||||
Every image on Docker Hub also receives a 12-character tag which corresponds with the git commit SHA
|
||||
that triggered the image build. You can inspect the state of the `jupyter/docker-stacks` repository
|
||||
for that commit to review the definition of the image (e.g., images with tag 7c45ec67c8e7 were built
|
||||
from
|
||||
[https://github.com/jupyter/docker-stacks/tree/7c45ec67c8e7](https://github.com/jupyter/docker-stacks/tree/7c45ec67c8e7)).
|
||||
|
||||
You must refer to git-SHA image tags when stability and reproducibility are important in your work. (e.g. `FROM jupyter/scipy-notebook:7c45ec67c8e7`, `docker run
|
||||
-it --rm jupyter/scipy-notebook:7c45ec67c8e7`). You should only use `latest` when a one-off container instance is acceptable (e.g., you want to briefly try a new
|
||||
library in a notebook).
|
||||
You must refer to git-SHA image tags when stability and reproducibility are important in your work.
|
||||
(e.g. `FROM jupyter/scipy-notebook:7c45ec67c8e7`,
|
||||
`docker run -it --rm jupyter/scipy-notebook:7c45ec67c8e7`). You should only use `latest` when a
|
||||
one-off container instance is acceptable (e.g., you want to briefly try a new library in a
|
||||
notebook).
|
||||
|
||||
## Community Stacks
|
||||
|
||||
The core stacks are just a tiny sample of what's possible when combining Jupyter with other technologies. We encourage members of the Jupyter community to create
|
||||
their own stacks based on the core images and link them below.
|
||||
The core stacks are just a tiny sample of what's possible when combining Jupyter with other
|
||||
technologies. We encourage members of the Jupyter community to create their own stacks based on the
|
||||
core images and link them below.
|
||||
|
||||
* [csharp-notebook is a community Jupyter Docker Stack image. Try C# in Jupyter Notebooks](https://github.com/tlinnet/csharp-notebook). The image includes more
|
||||
than 200 Jupyter Notebooks with example C# code and can readily be tried online via mybinder.org. Click here to launch
|
||||
[](https://mybinder.org/v2/gh/tlinnet/csharp-notebook/master).
|
||||
- [csharp-notebook is a community Jupyter Docker Stack image. Try C# in Jupyter Notebooks](https://github.com/tlinnet/csharp-notebook).
|
||||
The image includes more than 200 Jupyter Notebooks with example C# code and can readily be tried
|
||||
online via mybinder.org. Click here to launch
|
||||
[](https://mybinder.org/v2/gh/tlinnet/csharp-notebook/master).
|
||||
|
||||
* [education-notebook is a community Jupyter Docker Stack image](https://github.com/umsi-mads/education-notebook). The image includes nbgrader and RISE on top of
|
||||
the datascience-notebook image. Click here to launch it on
|
||||
[](https://mybinder.org/v2/gh/umsi-mads/education-notebook/master).
|
||||
- [education-notebook is a community Jupyter Docker Stack image](https://github.com/umsi-mads/education-notebook).
|
||||
The image includes nbgrader and RISE on top of the datascience-notebook image. Click here to
|
||||
launch it on
|
||||
[](https://mybinder.org/v2/gh/umsi-mads/education-notebook/master).
|
||||
|
||||
* __crosscompass/ihaskell-notebook__
|
||||
- **crosscompass/ihaskell-notebook**
|
||||
|
||||
[Source on GitHub](https://github.com/jamesdbrock/ihaskell-notebook)
|
||||
| [Dockerfile commit history](https://github.com/jamesdbrock/ihaskell-notebook/commits/master/Dockerfile)
|
||||
[Source on GitHub](https://github.com/jamesdbrock/ihaskell-notebook) |
|
||||
[Dockerfile commit history](https://github.com/jamesdbrock/ihaskell-notebook/commits/master/Dockerfile)
|
||||
| [Docker Hub image tags](https://hub.docker.com/r/crosscompass/ihaskell-notebook/tags)
|
||||
|
||||
`crosscompass/ihaskell-notebook` is based on [IHaskell](https://github.com/gibiansky/IHaskell). Includes popular packages and example notebooks.
|
||||
`crosscompass/ihaskell-notebook` is based on [IHaskell](https://github.com/gibiansky/IHaskell).
|
||||
Includes popular packages and example notebooks.
|
||||
|
||||
Try it on [](https://mybinder.org/v2/gh/jamesdbrock/learn-you-a-haskell-notebook/master?urlpath=lab/tree/ihaskell_examples/ihaskell/IHaskell.ipynb)
|
||||
Try it on
|
||||
[](https://mybinder.org/v2/gh/jamesdbrock/learn-you-a-haskell-notebook/master?urlpath=lab/tree/ihaskell_examples/ihaskell/IHaskell.ipynb)
|
||||
|
||||
* [java-notebook is a community Jupyter Docker Stack image](https://github.com/jbindinga/java-notebook). The image includes
|
||||
[IJava](https://github.com/SpencerPark/IJava) kernel on top of the minimal-notebook image. Click here to launch it on
|
||||
[](https://mybinder.org/v2/gh/jbindinga/java-notebook/master).
|
||||
- [java-notebook is a community Jupyter Docker Stack image](https://github.com/jbindinga/java-notebook).
|
||||
The image includes [IJava](https://github.com/SpencerPark/IJava) kernel on top of the
|
||||
minimal-notebook image. Click here to launch it on
|
||||
[](https://mybinder.org/v2/gh/jbindinga/java-notebook/master).
|
||||
|
||||
* [sage-notebook](https://github.com/sharpTrick/sage-notebook) is a community Jupyter Docker Stack image with the [sagemath](https://sagemath.org) kernel on top of
|
||||
the minimal-notebook image. Click here to launch it on
|
||||
[](https://mybinder.org/v2/gh/sharpTrick/sage-notebook/master).
|
||||
- [sage-notebook](https://github.com/sharpTrick/sage-notebook) is a community Jupyter Docker Stack
|
||||
image with the [sagemath](https://sagemath.org) kernel on top of the minimal-notebook image. Click
|
||||
here to launch it on
|
||||
[](https://mybinder.org/v2/gh/sharpTrick/sage-notebook/master).
|
||||
|
||||
* [GPU-Jupyter](https://github.com/iot-salzburg/gpu-jupyter/): Leverage Jupyter Notebooks with the power of your NVIDIA GPU and perform GPU calculations using
|
||||
Tensorflow and Pytorch in collaborative notebooks.
|
||||
This is done by generating a Dockerfile, that consists of the **nvidia/cuda** base image,
|
||||
the well-maintained **docker-stacks** that is integrated as submodule
|
||||
and GPU-able libraries like **Tensorflow**, **Keras** and **PyTorch** on top of it.
|
||||
- [GPU-Jupyter](https://github.com/iot-salzburg/gpu-jupyter/): Leverage Jupyter Notebooks with the
|
||||
power of your NVIDIA GPU and perform GPU calculations using Tensorflow and Pytorch in
|
||||
collaborative notebooks. This is done by generating a Dockerfile, that consists of the
|
||||
**nvidia/cuda** base image, the well-maintained **docker-stacks** that is integrated as submodule
|
||||
and GPU-able libraries like **Tensorflow**, **Keras** and **PyTorch** on top of it.
|
||||
|
||||
* [cgspatial-notebook](https://github.com/SCiO-systems/cgspatial-notebook) is a community Jupyter Docker Stack image. The image includes major geospatial Python &
|
||||
R libraries on top of the datascience-notebook image. Try it on
|
||||
binder:[](https://mybinder.org/v2/gh/SCiO-systems/cgspatial-notebook/master)
|
||||
- [cgspatial-notebook](https://github.com/SCiO-systems/cgspatial-notebook) is a community Jupyter
|
||||
Docker Stack image. The image includes major geospatial Python & R libraries on top of the
|
||||
datascience-notebook image. Try it on
|
||||
binder:[](https://mybinder.org/v2/gh/SCiO-systems/cgspatial-notebook/master)
|
||||
|
||||
|
||||
See the [contributing guide](../contributing/stacks.md) for information about how to create your own Jupyter Docker Stack.
|
||||
See the [contributing guide](../contributing/stacks.md) for information about how to create your own
|
||||
Jupyter Docker Stack.
|
||||
|
@@ -1,9 +1,8 @@
|
||||
docker
|
||||
pytest
|
||||
recommonmark==0.5.0
|
||||
recommonmark
|
||||
requests
|
||||
sphinx>=1.6
|
||||
sphinx-intl
|
||||
tabulate
|
||||
transifex-client
|
||||
|
||||
|
Reference in New Issue
Block a user