The original behavior was to create an src directory with the content of the
repository. The creation would happen in any case (remote or local repository).
With the filtering in place and the default to remove the .git folder, it breaks
the build as the src folder can be missing.
This patch ensures that the directory is present in the tar so the build can
continue as it did until now.
Currently repo2docker creates a context object that includes the whole content
of the repository it builds an image for. Thus it includes folders like .git
which is usually something that has no interest in the final image, can take
quite a lot of space and most importantly, kills the caching of that layer.
This patch adds support for reading dockerignore and containerignore files that
are used to ensure only the relevant data are used to build the image.
By default it also excludes the .git folder if neither of these files are
provided.
We would at some point need to set this as the default.
To prepare for that, I think we should make this an option
that is available, and run our tests on this too.
The R stack seems possibly currently unavailable for 20.04
(see https://community.rstudio.com/t/rstudio-server-ubuntu-20-04/64188)
but I'll try it out
matches expectations in the directive sequences
not strictly required after preassemble because we have no root steps between preassemble and assemble,
so we could remove the `last_user = "root"` there instead
includes regression test
We get node from the default JupyterLab install, since that
comes from conda-forge. This was not the case when we started -
we installed JupyterLab with pip. We no longer need the nodesource
node.
All the env vars, etc should still work!
- remove redundant monitor sibling process
- use python3-login executable instead of login shell subprocess
(same effect, but in more natural order)
- use non-blocking binary IO in tee instead of readline
(switch to binary mode, as text wrappers don't support non-blocking mode
see https://bugs.python.org/issue13322)
- make sure to set PYTHONUNBUFFERED
- implement tee with subprocess readlines
- forward all relevant signals from entrypoint to 'true' command
- add monitor process to ensure child shuts down if parent does (maybe not useful in docker?)
Changes in stencila mean it doesn't work anymore and it's not feasible to update nbstencilaproxy
Instead, show only a warning about removed support for stencila
If the Docker host does not support sparse files /var/log/lastlog can be extremely large if a large UID is set. --no-log-init prevents lastlog being created.
Unlike other parts of the generated Dockerfile,
the start script is evaluated at run time, rather
than at build time. Currently, we assume that the
current working directory is the same at runtime
as build time for the start script. This doesn't
hold true always, and particularly not in JupyterHub
environments where ${HOME} is often overlaid with
a persistent directory.
We change this to always refer to the full path,
using the ${REPO_DIR} environment variable. This
lets people building JupyterHub images to set
REPO_DIR to something like /srv/repo (like hubploy
does), and still have a working start script.