11FROM python:3.10.14
22
3+ # Create a non-root user
4+ RUN useradd -m -s /bin/bash user
5+ ENV HOME=/home/user
6+
37ENV JAVA_HOME=/opt/java/openjdk
48COPY --from=eclipse-temurin:11-jdk $JAVA_HOME $JAVA_HOME
59ENV PATH="${JAVA_HOME}/bin:${PATH}"
610
711RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \
8- build-essential curl git util-linux jq sudo nodejs npm fonts-noto-cjk
9-
10- RUN mkdir -p /home/user/.jupyter /home/user/.ipython /home/user/.server
12+ build-essential curl git util-linux jq nodejs npm fonts-noto-cjk
1113
1214ENV PIP_DEFAULT_TIMEOUT=100 \
1315 PIP_DISABLE_PIP_VERSION_CHECK=1 \
1416 PIP_NO_CACHE_DIR=1 \
15- JUPYTER_CONFIG_PATH="/home/user /.jupyter" \
16- IPYTHON_CONFIG_PATH="/home/user /.ipython" \
17- SERVER_PATH="/home/user /.server"
17+ JUPYTER_CONFIG_PATH="$HOME /.jupyter" \
18+ IPYTHON_CONFIG_PATH="$HOME /.ipython" \
19+ SERVER_PATH="$HOME /.server"
1820
1921# Install Jupyter
20- COPY ./requirements.txt requirements.txt
22+ COPY ./template/ requirements.txt requirements.txt
2123RUN pip install --no-cache-dir -r requirements.txt && ipython kernel install --name "python3" --user
2224
2325# Javascript Kernel
@@ -29,34 +31,41 @@ RUN ijsinstall --install=global
2931COPY --from=denoland/deno:bin-2.0.4 /deno /usr/bin/deno
3032RUN chmod +x /usr/bin/deno
3133RUN deno jupyter --unstable --install
32- COPY ./deno.json /home/user /.local/share/jupyter/kernels/deno/kernel.json
34+ COPY ./template/ deno.json $HOME /.local/share/jupyter/kernels/deno/kernel.json
3335
3436# Create separate virtual environment for server
3537RUN python -m venv $SERVER_PATH/.venv
3638
3739# Copy server and its requirements
3840RUN mkdir -p $SERVER_PATH/
39- COPY ./server/requirements.txt $SERVER_PATH
41+ COPY ./template/ server/requirements.txt $SERVER_PATH
4042RUN $SERVER_PATH/.venv/bin/pip install --no-cache-dir -r $SERVER_PATH/requirements.txt
41- COPY ./server $SERVER_PATH
43+ COPY ./template/ server $SERVER_PATH
4244
4345# Copy matplotlibrc
44- COPY ./matplotlibrc /home/user /.config/matplotlib/matplotlibrc
46+ COPY ./template/ matplotlibrc $HOME /.config/matplotlib/matplotlibrc
4547
4648# Copy Jupyter configuration
47- COPY ./start-up.sh $JUPYTER_CONFIG_PATH/
49+ COPY ./template/ start-up.sh $JUPYTER_CONFIG_PATH/
4850RUN chmod +x $JUPYTER_CONFIG_PATH/start-up.sh
4951
50- COPY ./jupyter_server_config.py $JUPYTER_CONFIG_PATH/
52+ COPY ./template/ jupyter_server_config.py $JUPYTER_CONFIG_PATH/
5153
5254RUN mkdir -p $IPYTHON_CONFIG_PATH/profile_default
53- COPY ./ipython_kernel_config.py $IPYTHON_CONFIG_PATH/profile_default/
55+ COPY ./template/ ipython_kernel_config.py $IPYTHON_CONFIG_PATH/profile_default/
5456
5557RUN mkdir -p $IPYTHON_CONFIG_PATH/profile_default/startup
56- COPY ./startup_scripts/* $IPYTHON_CONFIG_PATH/profile_default/startup
58+ COPY ./template/ startup_scripts/* $IPYTHON_CONFIG_PATH/profile_default/startup
5759
5860# Setup entrypoint for local development
59- WORKDIR /home/user
60- # COPY ./chart_data_extractor ./chart_data_extractor
61- # RUN pip install -e ./chart_data_extractor
61+ WORKDIR $HOME
62+ COPY ./chart_data_extractor ./chart_data_extractor
63+ RUN pip install -e ./chart_data_extractor
64+
65+ # Set ownership of all files to the user
66+ RUN chown -R user:user $HOME
67+
68+ # Switch to non-root user
69+ USER user
70+
6271ENTRYPOINT $JUPYTER_CONFIG_PATH/start-up.sh
0 commit comments