- 新增项目文档和 Docker 配置 - 添加 README.md 和 TODO.md 项目文档 - 为各服务添加 Dockerfile 和 docker-compose 配置 - 重构后端架构 - 新增 adapter 层(HTTP/Python 适配器) - 新增 repository 层(数据访问抽象) - 新增 router 模块统一管理路由 - 新增账单处理 handler - 扩展前端 UI 组件库 - 新增 Calendar、DateRangePicker、Drawer、Popover 等组件 - 集成 shadcn-svelte 组件库 - 增强分析页面功能 - 添加时间范围筛选器(支持本月默认值) - 修复 DateRangePicker 默认值显示问题 - 优化数据获取和展示逻辑 - 完善分析器服务 - 新增 FastAPI 服务接口 - 改进账单清理器实现
57 lines
1.1 KiB
Docker
57 lines
1.1 KiB
Docker
# SvelteKit Web 前端 Dockerfile
|
|
# 多阶段构建:构建阶段 + 运行阶段
|
|
|
|
# ===== 构建阶段 =====
|
|
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# 配置 yarn 镜像源(国内)
|
|
RUN yarn config set registry https://registry.npmmirror.com
|
|
|
|
# 先复制依赖文件,利用 Docker 缓存
|
|
COPY package.json yarn.lock* ./
|
|
|
|
# 安装依赖
|
|
RUN yarn install --frozen-lockfile || yarn install
|
|
|
|
# 复制源代码
|
|
COPY . .
|
|
|
|
# 构建生产版本
|
|
RUN yarn build
|
|
|
|
# ===== 运行阶段 =====
|
|
FROM node:20-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# 配置 Alpine 镜像源(国内)
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
|
# 安装必要工具
|
|
RUN apk --no-cache add curl
|
|
|
|
# 设置时区
|
|
ENV TZ=Asia/Shanghai
|
|
|
|
# 设置为生产环境
|
|
ENV NODE_ENV=production
|
|
ENV HOST=0.0.0.0
|
|
ENV PORT=3000
|
|
|
|
# 从构建阶段复制构建产物和依赖
|
|
COPY --from=builder /app/build ./build
|
|
COPY --from=builder /app/package.json ./
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
|
|
# 暴露端口
|
|
EXPOSE 3000
|
|
|
|
# 健康检查
|
|
HEALTHCHECK --interval=10s --timeout=5s --retries=5 \
|
|
CMD curl -f http://localhost:3000 || exit 1
|
|
|
|
# 启动服务
|
|
CMD ["node", "build"]
|