Update Dockerfile
Browse files- Dockerfile +30 -6
Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
|
| 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 |
-
#
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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"]
|