Create Dockerfile
Browse files- Dockerfile +37 -0
Dockerfile
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Gunakan base image resmi dari Jupyter
|
| 2 |
+
FROM jupyter/base-notebook:latest
|
| 3 |
+
# Jalankan sebagai root hanya untuk instalasi
|
| 4 |
+
USER root
|
| 5 |
+
# ===== Install Java 17 =====
|
| 6 |
+
RUN apt-get update && apt-get install -y openjdk-17-jdk curl && apt-get clean
|
| 7 |
+
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
| 8 |
+
ENV PATH=$JAVA_HOME/bin:$PATH
|
| 9 |
+
# ===== Install Apache Spark =====
|
| 10 |
+
RUN curl -L https://archive.apache.org/dist/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz \
|
| 11 |
+
| tar -xz -C /usr/local/ && mv /usr/local/spark-3.5.0-bin-hadoop3 /usr/local/spark
|
| 12 |
+
ENV SPARK_HOME=/usr/local/spark
|
| 13 |
+
ENV PATH=$SPARK_HOME/bin:$PATH
|
| 14 |
+
ENV PYSPARK_PYTHON=python3
|
| 15 |
+
# ===== Install Python package =====
|
| 16 |
+
RUN pip install --no-cache-dir pyspark pandas matplotlib findspark ipykernel
|
| 17 |
+
# ===== Perbaiki izin direktori home Jupyter =====
|
| 18 |
+
RUN mkdir -p /home/jovyan/.local/share/jupyter/runtime && \
|
| 19 |
+
chown -R 1000:100 /home/jovyan && \
|
| 20 |
+
chmod -R 777 /home/jovyan
|
| 21 |
+
# ===== Buat dua kernel Spark =====
|
| 22 |
+
RUN python -m ipykernel install --user --name spark_kernel1 --display-name "Spark Kernel 1" && \
|
| 23 |
+
python -m ipykernel install --user --name spark_kernel2 --display-name "Spark Kernel 2"
|
| 24 |
+
# ===== Direktori kerja =====
|
| 25 |
+
WORKDIR /workspace
|
| 26 |
+
RUN chmod -R 777 /workspace
|
| 27 |
+
|
| 28 |
+
# ===== Ubah kembali ke user default Jupyter =====
|
| 29 |
+
USER jovyan
|
| 30 |
+
# ===== Port Hugging Face (7860) =====
|
| 31 |
+
EXPOSE 7860
|
| 32 |
+
# ===== Jalankan Jupyter di port 7860 =====
|
| 33 |
+
CMD ["bash", "-c", "\
|
| 34 |
+
echo ' JupyterLab berjalan di Hugging Face Spaces pada port 7860' && \
|
| 35 |
+
jupyter lab --ip=0.0.0.0 --port=7860 --no-browser --allow-root \
|
| 36 |
+
--NotebookApp.token='' --NotebookApp.password='' --NotebookApp.default_url=/lab \
|
| 37 |
+
"]
|