Run Jupyter Notebook in the Background on Docker

12,963

Solution 1

I got it to work using the setup from:
https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook

the trick was to install tini and put the following code into a start-notebook.sh script:

#!/bin/bash
exec jupyter notebook &> /dev/null &

this is than added to the path with:
COPY start-notebook.sh /usr/local/bin/ and
RUN chmod +x /usr/local/bin/start-notebook.sh

Then I could set CMD ["start-notebook.sh"] to start up the container with jupyter running in the background on start.

Solution 2

You can do that, executing the below command

jupyter notebook --allow-root &> /dev/null &

You might see the warning that jupyter command needs --allow-root option if you execute jupyter notebook command as a root in a docker container.

Share:
12,963
MrLoh
Author by

MrLoh

Updated on July 25, 2022

Comments

  • MrLoh
    MrLoh almost 2 years

    I am trying to run a jupyter notebook in the background without printing anything to the console. I found this solution in a question for bash:

    jupyter notebook &> /dev/null &

    But I am running jupyter in a docker container and want it to start in the background via CMD. How can I do the same in sh?

    • Ivan
      Ivan over 8 years
      So far I don't know a way and the docs don't see to indicate that is possible by default. Your solution should work, though, adding this line on the CMD line in Docker.
    • MrLoh
      MrLoh over 8 years
      thanks @Ivan the problem is that docker runs CMD commands in sh, not in bash and it doesn't seem to have the same effect in sh.
  • Nick
    Nick over 7 years
    Can you explain what does the &> /dev/null & do? especially the two & symbols?
  • MrLoh
    MrLoh over 7 years
    It ensures that the logs are not printed to stdout but redirected into dev/null and that the terminal doesn't get blocked with Jupiter but that jupyter is just fired off as a background process. Just try it out.
  • michael
    michael over 7 years
    the &> is a newer bash-ism, "functional as of Bash 4" as per the docs, which redirects both stderr and stdout. Alternatively, and more traditionally: jupyter notebook > /dev/null 2>&1 , or, preferably, jupyter notebook >> /path/to/logfile.log 2>&1 (the last, trailing & just runs the entire command in the background).