dsmueller commited on
Commit
7a265ee
1 Parent(s): fd0ba6b

Updated with spotlight modifications

Browse files
Files changed (1) hide show
  1. Dockerfile +54 -28
Dockerfile CHANGED
@@ -1,41 +1,46 @@
1
  # Use an official Python runtime as a parent image
2
  FROM python:3.11.5-bookworm
3
 
4
- # The next few lines come from here: https://huggingface.co/docs/hub/spaces-sdks-docker#permissions
5
- # Set up a new user named "user" with user ID 1000
6
- RUN useradd -m -u 1000 user
7
- USER user
8
-
9
- # Clone aerospace-chatbot github repository
10
  USER root
11
- WORKDIR /clonedir
12
- RUN apt-get update && \
13
- apt-get install -y git
14
- RUN git clone --depth 1 https://github.com/dan-s-mueller/aerospace_chatbot.git .
15
 
16
- # Set home to the user's home directory
 
 
 
 
 
 
 
 
 
 
 
17
  USER user
 
 
18
  ENV HOME=/home/user \
19
  PATH=/home/user/.local/bin:$PATH
20
  WORKDIR $HOME
21
 
22
  # Create directories for the app code to be copied into
23
- RUN mkdir $HOME/app
24
- RUN mkdir $HOME/src
25
- RUN mkdir $HOME/data
26
  RUN mkdir $HOME/config
27
 
28
- # Check if /data directory exists, if not create a local db directory. Hugging face spaces has it by default, but not local docker.
29
- RUN if [ ! -d "/data" ]; then \
30
- mkdir $HOME/db; \
31
- fi
 
32
 
33
  # Install Poetry
34
  RUN pip3 install poetry==1.7.1
35
 
36
  # Copy poetry files from repo into home
37
- RUN cp /clonedir/pyproject.toml /clonedir/poetry.lock* $HOME
38
- RUN chown user:user $HOME/pyproject.toml $HOME/poetry.lock*
39
 
40
  # Disable virtual environments creation by Poetry as the Docker container itself is an isolated environment
41
  RUN poetry config virtualenvs.in-project true
@@ -49,26 +54,47 @@ ENV PATH="$HOME/.venv/bin:$PATH"
49
  # Install dependencies using Poetry
50
  RUN poetry install --no-root
51
 
52
- # Copy the rest of the repo into home
 
 
 
 
53
  RUN cp -R /clonedir/src /clonedir/data /clonedir/config /clonedir/app $HOME
54
  RUN chown -R user:user $HOME/src $HOME/data $HOME/config $HOME/db
55
 
 
 
 
 
 
 
 
 
 
 
56
  # Expose the port Streamlit runs on
57
  EXPOSE 8501
 
58
 
59
  # The HEALTHCHECK instruction tells Docker how to test a container to check that it is still working. Your container needs to listen to Streamlit’s (default) port 8501:
60
  HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
61
 
62
- # Update working directory to be consistent with where Start.py is
63
- WORKDIR $HOME/app
64
-
65
- # An ENTRYPOINT allows you to configure a container that will run as an executable. Here, it also contains the entire streamlit run command for your app, so you don’t have to call it from the command line
66
  ENTRYPOINT ["streamlit", "run", "Home.py", "--server.port=8501", "--server.address=0.0.0.0"]
67
 
 
 
 
68
  # To run locally
69
- # docker build -t ams-chatbot .
70
- # docker run -p 8501:8501 ams-chatbot
 
 
 
 
71
 
72
  # To run remotely from hugging face spaces
73
- # docker run -it -p 7860:7860 --platform=linux/amd64 \
74
  # registry.hf.space/ai-aerospace-aerospace-chatbots:latest
 
1
  # Use an official Python runtime as a parent image
2
  FROM python:3.11.5-bookworm
3
 
4
+ # Do root things: clone repo and install dependencies. libsndfile1 for spotlight. libhdf5-serial-dev for vector distance.
 
 
 
 
 
5
  USER root
 
 
 
 
6
 
7
+ RUN useradd -m -u 1000 user && chown -R user:user /home/user && chmod -R 777 /home/user
8
+
9
+ # WORKDIR /clonedir
10
+ # RUN apt-get update && \
11
+ # apt-get install -y git
12
+ # RUN git clone --depth 1 https://github.com/dan-s-mueller/aerospace_chatbot.git .
13
+
14
+ RUN apt-get update && apt-get install -y \
15
+ libhdf5-serial-dev \
16
+ libsndfile1 \
17
+ && rm -rf /var/lib/apt/lists/*
18
+
19
  USER user
20
+
21
+ # Set home to the user's home directory
22
  ENV HOME=/home/user \
23
  PATH=/home/user/.local/bin:$PATH
24
  WORKDIR $HOME
25
 
26
  # Create directories for the app code to be copied into
27
+ RUN mkdir $HOME/app
28
+ RUN mkdir $HOME/src
29
+ RUN mkdir $HOME/data
30
  RUN mkdir $HOME/config
31
 
32
+ # Give all users read/write permissions to the app code directories
33
+ RUN chmod 777 $HOME/app
34
+ RUN chmod 777 $HOME/src
35
+ RUN chmod 777 $HOME/data
36
+ RUN chmod 777 $HOME/config
37
 
38
  # Install Poetry
39
  RUN pip3 install poetry==1.7.1
40
 
41
  # Copy poetry files from repo into home
42
+ RUN cp /clonedir/pyproject.toml $HOME
43
+ RUN chown user:user $HOME/pyproject.toml
44
 
45
  # Disable virtual environments creation by Poetry as the Docker container itself is an isolated environment
46
  RUN poetry config virtualenvs.in-project true
 
54
  # Install dependencies using Poetry
55
  RUN poetry install --no-root
56
 
57
+ # Copy the rest of your application code. Use cp for github config, followed by chown statements. cp commands for non-local builds.
58
+ # COPY --chown=user:user ./src $HOME/src
59
+ # COPY --chown=user:user ./data $HOME/data
60
+ # COPY --chown=user:user ./config $HOME/config
61
+ # COPY --chown=user:user ./app $HOME/app
62
  RUN cp -R /clonedir/src /clonedir/data /clonedir/config /clonedir/app $HOME
63
  RUN chown -R user:user $HOME/src $HOME/data $HOME/config $HOME/db
64
 
65
+ # Set up database path and env variabole. Comment out if running on hugging face spaces
66
+ # RUN mkdir $HOME/db
67
+ # RUN chmod 777 $HOME/db
68
+ # ENV LOCAL_DB_PATH=$HOME/db
69
+
70
+ # Set final work directory for the application
71
+ WORKDIR $HOME/app
72
+ RUN pwd
73
+ RUN ls -R
74
+
75
  # Expose the port Streamlit runs on
76
  EXPOSE 8501
77
+ EXPOSE 9000
78
 
79
  # The HEALTHCHECK instruction tells Docker how to test a container to check that it is still working. Your container needs to listen to Streamlit’s (default) port 8501:
80
  HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
81
 
82
+ # An ENTRYPOINT allows you to configure a container that will run as an executable.
83
+ # Here, it also contains the entire streamlit run command for your app, so you don’t have to call it from the command line
84
+ # Port 9000 will not be accessible from the hugging face space.
 
85
  ENTRYPOINT ["streamlit", "run", "Home.py", "--server.port=8501", "--server.address=0.0.0.0"]
86
 
87
+ # Run this if you're running with terminal locally
88
+ # ENTRYPOINT ["/bin/bash", "-c"]
89
+
90
  # To run locally
91
+ # docker build -t aerospace-chatbot .
92
+ # docker run --user 1000:1000 -p 8501:8501 -p 9000:9000 -it aerospace-chatbot
93
+
94
+ # To run locally with a terminal.
95
+ # docker build -t aerospace-chatbot .
96
+ # docker run --user 1000:1000 --entrypoint /bin/bash -it aerospace-chatbot
97
 
98
  # To run remotely from hugging face spaces
99
+ # docker run -it --user 1000:1000 -p 7860:7860 --platform=linux/amd64 \
100
  # registry.hf.space/ai-aerospace-aerospace-chatbots:latest