# Берем за основу контейнер, приготовленный для spark в spark/Dockerfile FROM de-spark-iceberg:3.5.1 USER root ENV DEBIAN_FRONTEND=noninteractive # Устанавливаем JupyterLab и пакеты для инспекции стенда (MinIO, PostgreSQL) RUN pip3 install --no-cache-dir \ "jupyterlab==4.2.5" \ "boto3>=1.35,<2" \ "psycopg2-binary>=2.9,<3" # Создаём непривилегированного пользователя ARG NB_USER=jovyan ARG NB_UID=1000 ARG NB_GID=100 RUN if ! getent group ${NB_GID} >/dev/null; then groupadd --gid ${NB_GID} ${NB_USER}; fi \ && useradd --uid ${NB_UID} --gid ${NB_GID} -m -s /bin/bash ${NB_USER} \ && mkdir -p /opt/work \ && chown -R ${NB_UID}:${NB_GID} /opt/work USER ${NB_UID}:${NB_GID} WORKDIR /opt/work EXPOSE 8888 CMD ["jupyter", "lab", \ "--ip=0.0.0.0", \ "--port=8888", \ "--no-browser", \ "--NotebookApp.token=", \ "--NotebookApp.password="]