File size: 2,044 Bytes
9911f20
2513a22
b3f566d
e05e0b8
 
 
 
2513a22
e05e0b8
7521bab
9911f20
e05e0b8
cc6a9bb
e05e0b8
 
 
 
9911f20
e05e0b8
 
6c68cf8
 
 
e05e0b8
 
 
 
2513a22
e05e0b8
 
 
 
9b1d12d
9911f20
83179cd
9911f20
 
83179cd
0e15413
7521bab
2513a22
7521bab
9911f20
7521bab
 
 
e05e0b8
 
0584773
e05e0b8
 
 
29cb98d
9911f20
2513a22
 
7521bab
 
 
 
e05e0b8
2513a22
e05e0b8
2513a22
2ba9f9a
e05e0b8
7a77c92
b3f566d
2ba9f9a
 
 
 
9911f20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Download base image: latest Ubuntu LTS
FROM ubuntu:22.04

# Set environment variables
ENV NB_USER jovyan
ENV NB_UID 1000
ENV HOME /home/${NB_USER}
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/

# Install required packages
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
    tar \
    wget \
    bash \
    rsync \
    gcc \
    libfreetype6-dev \
    libhdf5-dev \
    libpng-dev \
    libzmq3-dev \
    python3 \
    python3-dev \
    python3-pip \
    unzip \
    pkg-config \
    software-properties-common \
    graphviz \
    openjdk-17-jdk \
    ant \
    ca-certificates-java \
    && apt-get clean \
    && update-ca-certificates -f

# Install Python 3.11 (latest stable version)
RUN add-apt-repository ppa:deadsnakes/ppa \
    && DEBIAN_FRONTEND=noninteractive apt-get update \
    && apt-get install -y python3.11 python3.11-venv python3.11-dev python3-pip \
    && apt-get clean

# Set up JAVA_HOME
RUN echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/" >> /etc/profile \
    && echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile

# Create a new user named "jovyan" with user ID 1000
RUN useradd -m -u ${NB_UID} ${NB_USER}

# Switch to the "jovyan" user
USER ${NB_USER}

# Set home and path variables for the user
ENV HOME=/home/${NB_USER} \
    PATH=/home/${NB_USER}/.local/bin:$PATH

# Set up PySpark to use Python 3.11 for both driver and workers
ENV PYSPARK_PYTHON=/usr/bin/python3.11
ENV PYSPARK_DRIVER_PYTHON=/usr/bin/python3.11

# Set the working directory to the user's home directory
WORKDIR ${HOME}

# Upgrade pip and install Python dependencies
RUN python3.11 -m pip install --upgrade pip
COPY requirements.txt /tmp/requirements.txt
RUN python3.11 -m pip install -r /tmp/requirements.txt

# Copy the application code into the container at /home/jovyan
COPY --chown=${NB_USER}:${NB_USER} . ${HOME}

# Expose port for Streamlit
EXPOSE 7860

# Define the entry point for the container
ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]