X-Dashboard / Dockerfile
Bayhaqy's picture
Create Dockerfile
ad50e6b
# Using the Ubuntu image
FROM ubuntu:latest
# set language, format and stuff
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# Update package manager (apt-get)
RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt update
# installing python3 with a specific version
RUN apt install python3.10 -y
RUN apt install python3.10-distutils -y
#RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
# installing other libraries
RUN apt-get install python3-pip -y && apt-get -y install sudo
RUN apt-get install python3-dev -y
RUN apt-get install python3-venv -y
RUN apt-get install curl -y
RUN apt-get install gnupg -y
RUN apt-get install nano -y
RUN apt-get install ca-certificates -y
RUN apt-get update && apt-get install -y git
# Create directories and import GPG key
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
# Add the Node.js repository
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
# Install Node.js
RUN apt-get update && apt-get install nodejs -y
# Install tweet-harvest@latest
RUN npm install -g tweet-harvest@latest
RUN npm install -g npm@latest
# Set up a new user named "user" with user ID 1000
RUN useradd -m -u 1000 user
# Switch to the "user" user
USER user
# Set home to the user's home directory
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
# Download from Github
RUN git clone https://github.com/bayhaqy/X-Dashboard.git $HOME/app
RUN pwd
RUN ls -lhat .
RUN ls -lhat $HOME
RUN ls -lhat $HOME/app
WORKDIR $HOME/app
# Add permission
RUN chown user $HOME/app
RUN chmod -R 777 ${HOME}
RUN pwd
# Setting virtual environment
RUN python3 -m venv .venv
ENV PATH="$HOME/app/.venv/bin:$PATH"
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt
# Try and run pip command after setting the user with `USER user` to avoid permission issues with Python
RUN pip install --no-cache-dir --upgrade pip
RUN pwd
RUN ls -lhat
RUN ls -lhat $HOME/app
# Check version
RUN python3 --version
RUN node -v
RUN npm list -g
# Make port 8501 available to the world outside this container
EXPOSE 8501
# Define the command to run your Streamlit app
CMD ["streamlit", "run", "app.py"]