haaaaus commited on
Commit
5f3b9bc
·
verified ·
1 Parent(s): fa46799

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +38 -0
Dockerfile ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Base Node image
2
+ FROM node:20-bookworm-slim
3
+
4
+ WORKDIR /app
5
+
6
+ # Git cần để clone repo
7
+ RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \
8
+ && rm -rf /var/lib/apt/lists/*
9
+
10
+ # Hugging Face Spaces thường set PORT, nhưng bạn nói app dùng 3000
11
+ ENV PORT=3000
12
+ EXPOSE 3000
13
+
14
+ # Repo URL sẽ truyền qua biến môi trường khi chạy (Spaces "Variables and secrets")
15
+ # Ví dụ: REPO_URL=https://github.com/username/repo.git
16
+ ENV REPO_URL=""
17
+
18
+ # (Tuỳ chọn) Nhánh hoặc tag
19
+ ENV REPO_REF="main"
20
+
21
+ # Start script: clone repo rồi chạy node server
22
+ # - Nếu có package-lock.json => npm ci
23
+ # - Nếu chỉ có package.json => npm install
24
+ # - Nếu không có package.json => chạy trực tiếp entry (mặc định server.js)
25
+ ENV NODE_ENTRY="server.js"
26
+
27
+ CMD bash -lc '\
28
+ set -euo pipefail; \
29
+ if [ -z "${REPO_URL}" ]; then echo "ERROR: REPO_URL is empty"; exit 1; fi; \
30
+ rm -rf /app/src; \
31
+ git clone --depth 1 --branch "${REPO_REF}" "${REPO_URL}" /app/src; \
32
+ cd /app/src; \
33
+ if [ -f package.json ]; then \
34
+ if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi; \
35
+ if npm run | grep -qE " start"; then npm run start; else node "${NODE_ENTRY}"; fi; \
36
+ else \
37
+ node "${NODE_ENTRY}"; \
38
+ fi'