Rodrigo Schmidt Nurmberg commited on
Commit
745fe4a
·
1 Parent(s): 93bd6ae

build: Enhance Docker build configuration

Browse files

This commit improves the Docker build process in three ways:
- The Dockerfile now runs `gradio cc build` to force the recompilation of project components, ensuring that any changes are always reflected in the final build.
- A `requirements.txt` file has been added to streamline dependency management, which simplifies the multi-stage build process.
- A `.dockerignore` file is now included to prevent unnecessary files and directories (like `.git`, `__pycache__`) from being copied into the build context.

Files changed (3) hide show
  1. .dockerignore +39 -0
  2. Dockerfile +43 -7
  3. src/requirements.txt +1 -0
.dockerignore ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Include any files or directories that you don't want to be copied to your
2
+ # container here (e.g., local build artifacts, temporary files, etc.).
3
+ #
4
+ # For more help, visit the .dockerignore file reference guide at
5
+ # https://docs.docker.com/go/build-context-dockerignore/
6
+
7
+ **/.DS_Store
8
+ **/__pycache__
9
+ **/.venv
10
+ **/.classpath
11
+ **/.dockerignore
12
+ **/.env
13
+ **/.git
14
+ **/.github
15
+ **/.gitignore
16
+ **/.gitmodules
17
+ **/.gitattributes
18
+ **/.project
19
+ **/.settings
20
+ **/.toolstarget
21
+ **/.vs
22
+ **/.vscode
23
+ **/*.*proj.user
24
+ **/*.dbmdl
25
+ **/*.jfm
26
+ **/*.env
27
+ **/docker-compose*
28
+ **/compose*.y*ml
29
+ **/Dockerfile*
30
+ **/nginx
31
+ **/node_modules
32
+ **/npm-debug.log
33
+ **/obj
34
+ **/secrets.dev.yaml
35
+ **/values.dev.yaml
36
+ **/LICENSE
37
+ **/CHANGELOG.md
38
+ **/INSTALL.md
39
+
Dockerfile CHANGED
@@ -1,16 +1,52 @@
1
 
2
- FROM python:3.11
3
 
4
  WORKDIR /code
5
 
6
- COPY --link --chown=1000 . .
7
 
8
- RUN mkdir -p /tmp/cache/
9
- RUN chmod a+rwx -R /tmp/cache/
10
- ENV TRANSFORMERS_CACHE=/tmp/cache/
 
11
 
12
- RUN pip install --no-cache-dir -e /code/src/
 
 
13
 
14
- ENV PYTHONUNBUFFERED=1 GRADIO_ALLOW_FLAGGING=never GRADIO_NUM_PORTS=1 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 SYSTEM=spaces
 
 
 
 
 
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  CMD ["python", "app.py"]
 
1
 
2
+ FROM python:3.11-slim as builder
3
 
4
  WORKDIR /code
5
 
6
+ COPY --chown=1000 . .
7
 
8
+ RUN apt-get update \
9
+ && apt-get install npm -y --no-install-recommends \
10
+ && apt-get clean \
11
+ && rm -rf /var/lib/apt/lists/*
12
 
13
+ RUN python -m pip install --upgrade pip \
14
+ && pip install build \
15
+ && pip install -r /code/src/requirements.txt
16
 
17
+ RUN cd /code/src \
18
+ && cd frontend \
19
+ && npm i -D @gradio/[email protected] \
20
+ && cd .. \
21
+ && gradio cc install \
22
+ && gradio cc build
23
 
24
+ FROM python:3.11-slim as final
25
+
26
+ RUN groupadd -r appgroup \
27
+ && useradd -r -g appgroup -d /home/appuser -m appuser
28
+
29
+ WORKDIR /home/appuser/app
30
+
31
+ RUN mkdir -p /tmp/cache/ \
32
+ && chmod a+rwx -R /tmp/cache/
33
+
34
+ COPY --chown=appuser:appgroup . .
35
+ COPY --from=builder --chown=appuser:appgroup /code/src/dist/*.whl ./
36
+
37
+ USER appuser
38
+
39
+ ENV PATH="/home/appuser/.local/bin:$PATH" \
40
+ TRANSFORMERS_CACHE=/tmp/cache/ \
41
+ PYTHONUNBUFFERED=1 \
42
+ GRADIO_ALLOW_FLAGGING=never \
43
+ GRADIO_NUM_PORTS=1 \
44
+ GRADIO_SERVER_NAME=0.0.0.0 \
45
+ GRADIO_SERVER_PORT=7860 \
46
+ SYSTEM=spaces
47
+
48
+ RUN python -m pip install --upgrade pip \
49
+ && pip install ./gradio_highlightedtextbox*.whl
50
+
51
+ EXPOSE 7860
52
  CMD ["python", "app.py"]
src/requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio<5.0,>=4.0