updated Ganymede and python images

This commit is contained in:
2024-05-25 19:36:19 +08:00
parent 2c9db69064
commit 875acc9d94
6 changed files with 205 additions and 33 deletions

View File

@@ -1,31 +1,43 @@
FROM alpine:3.19 AS build
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
apk update &&\
apk add python3 python3-dev pipx gcc musl-dev linux-headers
RUN adduser luser --system -s /bin/sh -h /var/lib/jupyter
USER luser
WORKDIR /var/lib/jupyter
RUN pipx install jupyter-core
RUN pipx inject jupyter-core jupyterlab
RUN pipx inject jupyter-core ipywidgets
RUN pipx inject jupyter-core jupyterlab-lsp
RUN pipx inject jupyter-core python-lsp-server[yapf,rope,pyflakes]
RUN pipx inject jupyter-core pylsp-mypy
RUN pipx inject jupyter-core matplotlib
RUN pipx inject jupyter-core numpy
apk add python3 python3-dev pipx gcc g++ musl-dev linux-headers libffi-dev
RUN adduser jovyan -u 1000 --system -s /bin/sh -h /home/jovyan
USER jovyan
WORKDIR /home/jovyan
RUN python -m venv venv
RUN venv/bin/pip install numpy
RUN venv/bin/pip install matplotlib
RUN venv/bin/pip install jupyter-core
RUN venv/bin/pip install jupyterhub
RUN venv/bin/pip install jupyterlab
RUN venv/bin/pip install notebook
RUN venv/bin/pip install ipywidgets
RUN venv/bin/pip install jupyterlab-lsp
RUN venv/bin/pip install python-lsp-server[yapf,rope,pyflakes]
RUN venv/bin/pip install pylsp-mypy
RUN venv/bin/pip install solders
RUN venv/bin/pip install solana
ENV PATH="/home/jovyan/venv/bin/:$PATH"
FROM alpine:3.19
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
apk update &&\
apk add python3 texlive texlive-xetex texlive-full
RUN adduser luser --system -s /bin/sh -h /var/lib/jupyter
USER luser
WORKDIR /var/lib/jupyter
COPY --from=build /var/lib/jupyter /var/lib/jupyter
ENV PATH="/var/lib/jupyter/.local/bin/:$PATH"
ENTRYPOINT ["jupyter", "lab", "--no-browser", "--ip=0.0.0.0"]
EXPOSE 8888/tcp
apk add python3
RUN adduser jovyan -u 1000 --system -s /bin/sh -h /home/jovyan
USER jovyan
COPY --from=build /home/jovyan /home/jovyan
COPY jupyter_server_config.py docker_healthcheck.py /etc/jupyter/
COPY start-notebook.py start-singleuser.py /usr/local/bin/
RUN mkdir /home/jovyan/work
WORKDIR /home/jovyan/work
ENV JUPYTER_PORT=8888
EXPOSE $JUPYTER_PORT
ENV PATH="/home/jovyan/venv/bin/:$PATH"
CMD ["start-notebook.py"]
# HEALTHCHECK documentation: https://docs.docker.com/engine/reference/builder/#healthcheck
# This healtcheck works well for `lab`, `notebook`, `nbclassic`, `server`, and `retro` jupyter commands
# https://github.com/jupyter/docker-stacks/issues/915#issuecomment-1068528799
HEALTHCHECK --interval=3s --timeout=1s --start-period=3s --retries=3 \
CMD /etc/jupyter/docker_healthcheck.py || exit 1