'Pass build argument to bash command in Dockerfile
Currently, my workflow is to use an alias for the jupyter lab command via RUN echo 'alias...'
at the end of my Dockerfile:
RUN echo 'alias jupyterlab="jupyter lab --ip=0.0.0.0 --port=8117 --no-browser --allow-root"' >> ~/.bashrc
which enables me to open up the JupyterLab container in my browser at port-number 8117, using just the command jupyterlab
.
I would like to try to generalise this so that any valid port_number
can be submitted as a build argument when building the Dockerfile, via e.g.,
docker build -t <image_name> . --build-arg PORTNUM=<port_number>
by changing the Dockerfile. Since Bash alias
doesn't take arguments, I tried to adapt this solution:
RUN echo 'jupyterlab() { jupyter lab --ip=0.0.0.0 --port="$PORTNUM" --no-browser --allow-root ; }' >> ~/.bashrc
but now I get error
traitlets.traitlets.TraitError: The 'port' trait of a ServerApp instance must be an int, but a value of '' <class 'str'> was specified.
which suggests that no argument ended up being passed to the $PORTNUM. Anyone know how to fix this?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|