fix: docker permission.
Some checks failed
Build and Push Docker Image / buildx (push) Has been cancelled

This commit is contained in:
2025-11-11 15:18:01 +08:00
parent f1a88c9890
commit cf74607dbf
4 changed files with 20 additions and 4 deletions

View File

@@ -11,6 +11,9 @@ FROM base AS production
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# Create directory for database with proper permissions
RUN mkdir -p /app/data && chown -R 1001:1001 /app/data
EXPOSE 3000 EXPOSE 3000
# Create a non-root user # Create a non-root user
@@ -19,4 +22,7 @@ RUN adduser -S nextjs -u 1001
USER nextjs USER nextjs
# Set environment variable for database path
ENV DB_PATH=/app/data/data.db
CMD ["node", "server.js"] CMD ["node", "server.js"]

View File

@@ -46,9 +46,17 @@ docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap docker buildx inspect --bootstrap
# 构建并推送多平台镜像 # 构建并推送多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/timeline-calendar:latest --push . docker buildx build --platform linux/amd64,linux/arm64 -t registry.cn-beijing.aliyuncs.com/licsber/timeline:latest --push .
``` ```
## 🗄️ 数据库持久化
Docker 部署时,用户数据存储在 SQLite 数据库中,默认会持久化到项目根目录的 `data` 文件夹中。
- 数据库文件路径:`./data/data.db`
要备份数据,只需复制整个 `data` 目录。要恢复数据,将备份的 `data` 目录复制回项目根目录即可。
## 🧭 使用指南 ## 🧭 使用指南
1. **添加服务器**:页面底部输入想连接的后端地址,点击「添加」,并从下拉框选择它 1. **添加服务器**:页面底部输入想连接的后端地址,点击「添加」,并从下拉框选择它
2. **注册 / 登录**:按提示填写信息,完成后即可自动加载个人日历 2. **注册 / 登录**:按提示填写信息,完成后即可自动加载个人日历
@@ -90,11 +98,12 @@ timeline/
## ⚙️ 配置项 ## ⚙️ 配置项
- `PORT`:后端监听端口,默认 `3000` - `PORT`:后端监听端口,默认 `3000`
- `JWT_SECRET`JWT 密钥,默认简单字符串,生产环境务必更换 - `JWT_SECRET`JWT 密钥,默认简单字符串,生产环境务必更换
- `DB_PATH`SQLite 数据库文件路径,默认 `/app/data/data.db`
## 💡 小贴士 ## 💡 小贴士
- 服务器列表保存在浏览器 LocalStorage可随时增删 - 服务器列表保存在浏览器 LocalStorage可随时增删
- 支持多个浏览器/设备同时登录同一账号,数据实时同步 - 支持多个浏览器/设备同时登录同一账号,数据实时同步
- 若要重置数据,直接删除根目录下的 `data.db` 即可(注意备份) - 若要重置数据,直接删除根目录下的 `data` 目录即可(注意备份)
## 🧱 技术栈速览 ## 🧱 技术栈速览
- **后端**Node.js、Express 5、SQLite、JWT、bcryptjs - **后端**Node.js、Express 5、SQLite、JWT、bcryptjs

View File

@@ -12,6 +12,7 @@ services:
environment: environment:
- PORT=3000 - PORT=3000
- JWT_SECRET=${JWT_SECRET:-change-this-secret-key-in-production} - JWT_SECRET=${JWT_SECRET:-change-this-secret-key-in-production}
- DB_PATH=/app/data/data.db
volumes: volumes:
- ./data.db:/app/data.db - ./data:/app/data
restart: unless-stopped restart: unless-stopped

View File

@@ -2,7 +2,7 @@ const path = require('path');
const PORT = process.env.PORT || 3000; const PORT = process.env.PORT || 3000;
const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key-change-in-production'; const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key-change-in-production';
const DB_PATH = path.join(__dirname, '..', 'data.db'); const DB_PATH = process.env.DB_PATH || path.join(__dirname, '..', 'data.db');
module.exports = { module.exports = {
PORT, PORT,