CoolFace
Apppublic

Mandr1/parallel

sourceHugging Facemitupdated 11mo agoView on Hugging Face
0likes
Dockerfile94 linesDownload Raw Back to root
1# ===== Gunakan base image resmi Jupyter =====2FROM jupyter/base-notebook:latest3 4# Jalankan sebagai root hanya untuk instalasi5USER root6 7# ===== Install Java 17 dan utilitas =====8RUN apt-get update && \9    apt-get install -y --no-install-recommends openjdk-17-jdk curl ca-certificates wget && \10    apt-get clean && rm -rf /var/lib/apt/lists/*11 12ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd6413ENV PATH=$JAVA_HOME/bin:$PATH14 15# ===== Install Apache Spark 3.5.0 =====16ENV SPARK_VERSION=3.5.017ENV SPARK_DIST=spark-${SPARK_VERSION}-bin-hadoop318ENV SPARK_URL=https://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/${SPARK_DIST}.tgz19 20RUN curl -L -o /tmp/spark.tgz "${SPARK_URL}" && \21    tar -xzf /tmp/spark.tgz -C /usr/local/ && \22    rm /tmp/spark.tgz && \23    mv /usr/local/${SPARK_DIST} /usr/local/spark24 25# ===== Set environment Spark =====26ENV SPARK_HOME=/usr/local/spark27ENV PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$JAVA_HOME/bin:$PATH28ENV PYSPARK_PYTHON=python329# Pastikan nama py4j tidak terputus; Spark 3.5.0 biasanya bundling py4j 0.10.9.730ENV PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.9.7-src.zip:$PYTHONPATH31 32# ===== Install library Python =====33# NOTE: jika kamu ingin menggunakan pyspark via pip, gunakan pyspark==3.5.0 untuk cocok dengan Spark.34# Saya sengaja tidak meng-install 'pyspark' lewat pip untuk menghindari mismatch dengan binary Spark yang diinstall.35RUN pip install --no-cache-dir pandas matplotlib findspark ipykernel jupyterlab36 37# ===== Perbaiki izin direktori home Jupyter =====38RUN mkdir -p /home/jovyan/.local/share/jupyter/runtime && \39    chown -R 1000:100 /home/jovyan && \40    chmod -R 777 /home/jovyan41 42# ===== Siapkan direktori kerja dan log Spark =====43RUN mkdir -p /workspace/spark_logs/kernel1 /workspace/spark_logs/kernel2 && \44    chmod -R 777 /workspace45WORKDIR /workspace46 47# ===== Buat dua kernel Spark terisolasi =====48RUN mkdir -p /usr/local/share/jupyter/kernels/spark_kernel1 && \49    mkdir -p /usr/local/share/jupyter/kernels/spark_kernel250 51# kernel 152RUN cat > /usr/local/share/jupyter/kernels/spark_kernel1/kernel.json <<'JSON'53{54  "argv": ["python3", "-m", "ipykernel_launcher", "-f", "{connection_file}"],55  "display_name": "Spark Kernel 1",56  "language": "python",57  "env": {58    "JAVA_HOME": "/usr/lib/jvm/java-17-openjdk-amd64",59    "SPARK_HOME": "/usr/local/spark",60    "PYSPARK_PYTHON": "python3",61    "SPARK_LOG_DIR": "/workspace/spark_logs/kernel1",62    "SPARK_LOCAL_DIRS": "/workspace/spark_logs/kernel1",63    "PYTHONPATH": "/usr/local/spark/python/:/usr/local/spark/python/lib/py4j-0.10.9.7-src.zip"64  }65}66JSON67 68# kernel 269RUN cat > /usr/local/share/jupyter/kernels/spark_kernel2/kernel.json <<'JSON'70{71  "argv": ["python3", "-m", "ipykernel_launcher", "-f", "{connection_file}"],72  "display_name": "Spark Kernel 2",73  "language": "python",74  "env": {75    "JAVA_HOME": "/usr/lib/jvm/java-17-openjdk-amd64",76    "SPARK_HOME": "/usr/local/spark",77    "PYSPARK_PYTHON": "python3",78    "SPARK_LOG_DIR": "/workspace/spark_logs/kernel2",79    "SPARK_LOCAL_DIRS": "/workspace/spark_logs/kernel2",80    "PYTHONPATH": "/usr/local/spark/python/:/usr/local/spark/python/lib/py4j-0.10.9.7-src.zip"81  }82}83JSON84 85# ===== Ubah kembali ke user default Jupyter =====86USER jovyan87 88# ===== Port Hugging Face (7860) =====89EXPOSE 786090 91# ===== Jalankan JupyterLab di port 7860 =====92# Gunakan ServerApp flags (kompatibel dengan jupyter_server/jupyterlab terbaru)93CMD ["bash", "-c", "echo 'JupyterLab berjalan di port 7860' && jupyter lab --ip=0.0.0.0 --port=7860 --no-browser --ServerApp.token='' --ServerApp.password='' --NotebookApp.token='' --NotebookApp.password='' --LabApp.default_url=/lab"]94