All checks were successful
CI / Build Jupyter Ganymede docker images (push) Successful in 12h27m12s
52 lines
2.5 KiB
Docker
52 lines
2.5 KiB
Docker
FROM alpine:3.21 AS build-base
|
|
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
|
|
apk update &&\
|
|
apk add python3 python3-dev pipx gcc g++ musl-dev linux-headers which curl libffi-dev git
|
|
RUN adduser jovyan -u 1000 --system -s /bin/sh -h /home/jovyan
|
|
|
|
FROM build-base AS java-build
|
|
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
|
|
apk add openjdk11-jdk maven
|
|
USER jovyan
|
|
WORKDIR /home/jovyan
|
|
#RUN curl -O https://repo1.maven.org/maven2/dev/hcf/ganymede/ganymede/2.1.2.20230910/ganymede-2.1.2.20230910.jar
|
|
#ADD --chown=jovyan:jovyan https://github.com/allen-ball/ganymede.git ganymede
|
|
RUN git clone https://github.com/allen-ball/ganymede.git ganymede
|
|
WORKDIR /home/jovyan/ganymede
|
|
RUN --mount=type=cache,target=/home/jovyan/.m2/,uid=1000,gid=1000,sharing=locked mvn -Dmaven.test.skip=true -q package
|
|
|
|
FROM build-base AS python-build
|
|
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
|
|
apk add openjdk21-jre
|
|
USER jovyan
|
|
WORKDIR /home/jovyan
|
|
RUN python -m venv venv
|
|
RUN --mount=type=cache,target=/home/jovyan/.cache/pip,uid=1000,gid=1000 venv/bin/pip install jupyter-core
|
|
RUN --mount=type=cache,target=/home/jovyan/.cache/pip,uid=1000,gid=1000 venv/bin/pip install notebook jupyterlab
|
|
ENV PATH="/home/jovyan/venv/bin/:$PATH"
|
|
RUN --mount=type=bind,from=java-build,src=/home/jovyan/ganymede/ganymede/target/ganymede-2.1.3-SNAPSHOT.jar,target=/home/jovyan/ganymede.jar\
|
|
java -jar /home/jovyan/ganymede.jar -i --copy-jar=true
|
|
RUN --mount=type=cache,target=/home/jovyan/.cache/pip,uid=1000,gid=1000 venv/bin/pip install jupyterhub
|
|
|
|
FROM alpine:3.21
|
|
RUN --mount=type=cache,target=/var/cache/apk/,sharing=locked \
|
|
apk update &&\
|
|
apk add python3 openjdk21-jre
|
|
RUN adduser jovyan -u 1000 --system -s /bin/sh -h /home/jovyan
|
|
USER jovyan
|
|
COPY --from=python-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
|