gardari commited on
Commit
4da0dd8
·
verified ·
1 Parent(s): 783ea25

Upload Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +62 -0
Dockerfile ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Build frontend
2
+ FROM node:18 as frontend-build
3
+ WORKDIR /app
4
+ COPY frontend/package*.json ./
5
+ RUN npm install
6
+ COPY frontend/ ./
7
+
8
+ RUN npm run build
9
+
10
+ # Build backend
11
+ FROM python:3.12-slim
12
+ WORKDIR /app
13
+
14
+ # Create non-root user
15
+ RUN useradd -m -u 1000 user
16
+
17
+ # Install poetry
18
+ RUN pip install poetry
19
+
20
+ # Create and configure cache directory
21
+ RUN mkdir -p /app/.cache && \
22
+ chown -R user:user /app
23
+
24
+ # Copy and install backend dependencies
25
+ COPY backend/pyproject.toml backend/poetry.lock* ./
26
+ RUN poetry config virtualenvs.create false \
27
+ && poetry install --no-interaction --no-ansi --no-root --only main
28
+
29
+ # Copy backend code
30
+ COPY backend/ .
31
+
32
+ # Install Node.js and npm
33
+ RUN apt-get update && apt-get install -y \
34
+ curl \
35
+ netcat-openbsd \
36
+ && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
37
+ && apt-get install -y nodejs \
38
+ && rm -rf /var/lib/apt/lists/*
39
+
40
+ # Copy frontend server and build
41
+ COPY --from=frontend-build /app/build ./frontend/build
42
+ COPY --from=frontend-build /app/package*.json ./frontend/
43
+ COPY --from=frontend-build /app/server.js ./frontend/
44
+
45
+ # Install frontend production dependencies
46
+ WORKDIR /app/frontend
47
+ RUN npm install --production
48
+ WORKDIR /app
49
+
50
+ # Environment variables
51
+ ENV HF_HOME=/app/.cache \
52
+ HF_DATASETS_CACHE=/app/.cache \
53
+ INTERNAL_API_PORT=7861 \
54
+ PORT=7860 \
55
+ NODE_ENV=production
56
+
57
+ # Note: HF_TOKEN should be provided at runtime, not build time
58
+ USER user
59
+ EXPOSE 7860
60
+
61
+ # Start both servers with wait-for
62
+ CMD ["sh", "-c", "uvicorn app.asgi:app --host 0.0.0.0 --port 7861 & while ! nc -z localhost 7861; do sleep 1; done && cd frontend && npm run serve"]