Spaces:
Build error
Build error
Update Dockerfile for correct directory structure
Browse files- Dockerfile +28 -14
Dockerfile
CHANGED
@@ -58,6 +58,9 @@ RUN poetry config virtualenvs.create false && \
|
|
58 |
# Final stage
|
59 |
FROM python:3.10-slim-bookworm
|
60 |
|
|
|
|
|
|
|
61 |
# Install runtime dependencies in a single layer
|
62 |
RUN apt-get update && \
|
63 |
apt-get install -y --no-install-recommends \
|
@@ -65,17 +68,25 @@ RUN apt-get update && \
|
|
65 |
npm \
|
66 |
&& rm -rf /var/lib/apt/lists/*
|
67 |
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
-
#
|
71 |
-
|
72 |
-
COPY api/ /app/api/
|
73 |
|
74 |
-
# Copy
|
75 |
-
COPY --from=
|
76 |
-
COPY --
|
77 |
-
|
78 |
-
|
|
|
|
|
|
|
|
|
79 |
|
80 |
# Set environment variables
|
81 |
ENV FLASK_APP=app.py \
|
@@ -87,11 +98,14 @@ ENV FLASK_APP=app.py \
|
|
87 |
APP_WEB_URL=http://127.0.0.1:3000 \
|
88 |
NODE_ENV=production
|
89 |
|
90 |
-
#
|
91 |
-
|
|
|
|
|
|
|
92 |
|
93 |
# Setup entrypoint
|
94 |
-
COPY docker/entrypoint.sh /entrypoint.sh
|
95 |
-
RUN chmod +x /entrypoint.sh
|
96 |
|
97 |
-
CMD ["
|
|
|
58 |
# Final stage
|
59 |
FROM python:3.10-slim-bookworm
|
60 |
|
61 |
+
# Set up a new user named "user" with user ID 1000 (required by Hugging Face)
|
62 |
+
RUN useradd -m -u 1000 user
|
63 |
+
|
64 |
# Install runtime dependencies in a single layer
|
65 |
RUN apt-get update && \
|
66 |
apt-get install -y --no-install-recommends \
|
|
|
68 |
npm \
|
69 |
&& rm -rf /var/lib/apt/lists/*
|
70 |
|
71 |
+
# Set home to the user's home directory
|
72 |
+
ENV HOME=/home/user \
|
73 |
+
PATH=/home/user/.local/bin:$PATH
|
74 |
+
|
75 |
+
# Set the working directory to the user's home directory
|
76 |
+
WORKDIR $HOME/app
|
77 |
|
78 |
+
# Install gunicorn
|
79 |
+
RUN pip install --no-cache-dir gunicorn gevent
|
|
|
80 |
|
81 |
+
# Copy Python environment and set permissions
|
82 |
+
COPY --from=python-builder --chown=user /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
|
83 |
+
COPY --chown=user api/ $HOME/app/api/
|
84 |
+
|
85 |
+
# Copy web build artifacts with correct permissions
|
86 |
+
COPY --from=web-builder --chown=user /app/web/.next $HOME/app/web/.next
|
87 |
+
COPY --from=web-builder --chown=user /app/web/public $HOME/app/web/public
|
88 |
+
COPY --from=web-builder --chown=user /app/web/node_modules $HOME/app/web/node_modules
|
89 |
+
COPY --from=web-builder --chown=user /app/web/package.json $HOME/app/web/package.json
|
90 |
|
91 |
# Set environment variables
|
92 |
ENV FLASK_APP=app.py \
|
|
|
98 |
APP_WEB_URL=http://127.0.0.1:3000 \
|
99 |
NODE_ENV=production
|
100 |
|
101 |
+
# Switch to the non-root user
|
102 |
+
USER user
|
103 |
+
|
104 |
+
# Expose port 7860 as required by Hugging Face Spaces
|
105 |
+
EXPOSE 7860
|
106 |
|
107 |
# Setup entrypoint
|
108 |
+
COPY --chown=user docker/entrypoint.sh $HOME/app/entrypoint.sh
|
109 |
+
RUN chmod +x $HOME/app/entrypoint.sh
|
110 |
|
111 |
+
CMD ["./entrypoint.sh"]
|