cheymin commited on
Commit
cd87182
·
verified ·
1 Parent(s): 82d9bca

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +30 -6
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- \# 使用 Node.js 官方镜像作为基础
2
  FROM node:20-alpine AS builder
3
 
4
  WORKDIR /app
@@ -9,10 +9,10 @@ COPY . .
9
  # 安装依赖
10
  RUN npm ci --omit=dev || npm install
11
 
12
- # 构建项目(每次启动时执行,但镜像中预先构建一次)
13
  RUN npm run build || echo "Build will run at runtime"
14
 
15
- # ===== 运行阶段 =====
16
  FROM node:20-alpine
17
 
18
  WORKDIR /app
@@ -26,7 +26,7 @@ COPY --from=builder /app /app
26
  # 创建必要的目录
27
  RUN mkdir -p /app/dist /app/config /app/bookmarks /run/nginx /var/log/nginx
28
 
29
- # 复制 nginx 配置
30
  RUN cat > /etc/nginx/nginx.conf << 'EOF'
31
  pid /tmp/nginx.pid;
32
  events {
@@ -64,8 +64,32 @@ ENV MENAV_IMPORT_BOOKMARKS=false
64
 
65
  EXPOSE 7860
66
 
67
- # 启动脚本
68
- COPY entrypoint.sh /entrypoint.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  RUN chmod +x /entrypoint.sh
70
 
71
  CMD ["/entrypoint.sh"]
 
1
+ # 使用 Node.js 官方镜像作为基础
2
  FROM node:20-alpine AS builder
3
 
4
  WORKDIR /app
 
9
  # 安装依赖
10
  RUN npm ci --omit=dev || npm install
11
 
12
+ # 构建项目
13
  RUN npm run build || echo "Build will run at runtime"
14
 
15
+ # 运行阶段
16
  FROM node:20-alpine
17
 
18
  WORKDIR /app
 
26
  # 创建必要的目录
27
  RUN mkdir -p /app/dist /app/config /app/bookmarks /run/nginx /var/log/nginx
28
 
29
+ # 配置 nginx
30
  RUN cat > /etc/nginx/nginx.conf << 'EOF'
31
  pid /tmp/nginx.pid;
32
  events {
 
64
 
65
  EXPOSE 7860
66
 
67
+ # 创建 entrypoint.sh
68
+ RUN cat > /entrypoint.sh << 'EOF'
69
+ #!/bin/sh
70
+ set -e
71
+
72
+ echo "[$(date)] Starting Menav..."
73
+
74
+ if [ "$MENAV_IMPORT_BOOKMARKS" = "true" ] && [ -d /app/bookmarks ]; then
75
+ echo "[$(date)] Importing bookmarks..."
76
+ npm run import-bookmarks || echo "Import failed, continuing"
77
+ fi
78
+
79
+ if [ "$MENAV_ENABLE_SYNC" = "true" ]; then
80
+ echo "[$(date)] Syncing data..."
81
+ npm run sync-all || echo "Sync failed, continuing"
82
+ fi
83
+
84
+ echo "[$(date)] Building project..."
85
+ npm run build
86
+
87
+ echo "[$(date)] Starting nginx on port 7860..."
88
+ nginx -c /etc/nginx/nginx.conf
89
+
90
+ tail -f /dev/null
91
+ EOF
92
+
93
  RUN chmod +x /entrypoint.sh
94
 
95
  CMD ["/entrypoint.sh"]