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.
We want to put the repo somewhere other than ${HOME}
so we can mount persistent storage in ${HOME} more easily.
Most of repo2docker assumes current directory is where
the contents are, so we should be able to get most of it
working by setting WORKDIR to ${REPO_PATH} and letting
${REPO_PATH} be configurable.
Unclear what to do for plain Dockerfiles, Legacy Dockerfiles &
nix.
`apt-get install` calls `dpkg` underneath to do the
installation. Unfortunately, `-qq` does not get passed
through, and we end up with a lot of log output even with
`-qq`. Redirecting stdout to /dev/null stops this output.
Errors come out to stderr, so those will be displayed.
When you run repo2docker locally, the uid is usually set
to the current user's uid. However, when we push the content
to Docker, we invariably set the uid of the scripts we
use as part of repo2docker at 1000. This causes a cache bust
every time.
This patch uses the correct uid, and fixes cache busting. Makes
local test runs *much* faster.
Fixes#508