初始提交:浏览器首页 MyHomePage 全栈项目
# 项目概述 个人浏览器首页导航应用,支持书签分类管理、搜索引擎快捷搜索、 必应每日壁纸轮播、前后端分离部署,适配 1Panel 服务器(Docker 模式)。 # 技术栈 - 前端:Vue 3 + TypeScript + Vite + Pinia + Capacitor(Android 打包) - 后端:.NET 8 + SqlSugar(多数据库) + SQLite/MySQL + Swashbuckle - 部署:1Panel 应用商店自定义应用(Docker Compose 模式) # 项目结构 - backend/ .NET 8 API 后端(8 个 Controller + 15 个 Service) - frontend/ Vue 3 前端(19 个组件 + 9 个 API 模块 + 5 个 Store) - docker/ Docker 部署文件(后端镜像 + Nginx 反代) - docs/ 部署手册(1Panel 实战版) - scripts/ E2E 测试脚本 # 已实现功能 - 书签管理:增删改查 + 树形分类 + 拖拽排序 + 主色自适应 - 搜索引擎:8 个内置引擎 + 自定义引擎 + favicon 自动抓取 - 必应壁纸:每日轮播 + 多分辨率自动选择 + 1.6MP 质量优先 - 全局设置:主题/行为/数据/工具 4 分类 + 跨设备同步 - 文件上传:图标/书签/通用(容器持久化 + 跨域 URL 拼接) - 同步:基于变更日志的设备间数据同步 - 跨域部署:前后端分离 + runtime config.json 无需重新编译 # 进度记录 - 已完成 P0~P52 共 53 个开发节点(详细见 说明文档.md) - 当前版本:v1.0 部署就绪 # 部署文档 - README.md:项目说明 + 快速开始 - 说明文档.md:完整开发进度(中文) - docs/DEPLOY.md:1Panel 部署手册(Docker 模式)
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 完整 Docker Compose 部署:MySQL + 后端(内嵌前端 + Nginx 反代可选)
|
||||
# 使用方法:docker compose up -d
|
||||
# 完整部署手册:docs/DEPLOY.md
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: myhomepage-mysql
|
||||
restart: always # 开机自启(生产用 always,不用 unless-stopped)
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpw}
|
||||
MYSQL_DATABASE: myhomepage
|
||||
MYSQL_USER: myhomepage
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-myhomepagepw}
|
||||
TZ: Asia/Shanghai # 时区
|
||||
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone=+08:00
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
# 不暴露 3306 到宿主机(默认安全);如需远程连接改为 "127.0.0.1:3306:3306"
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "myhomepage", "-p${MYSQL_PASSWORD:-myhomepagepw}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 30s # 首次启动给 30s 宽限
|
||||
logging: # P47:日志轮转(单文件 10M / 保留 3 份)
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/backend.Dockerfile
|
||||
image: myhomepage-backend:latest # 显式打 tag,方便回滚
|
||||
container_name: myhomepage-backend
|
||||
restart: always
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
# === 数据库 ===
|
||||
Database__Provider: MySql
|
||||
Database__ConnectionString: "Server=mysql;Port=3306;Database=myhomepage;Uid=myhomepage;Pwd=${MYSQL_PASSWORD:-myhomepagepw};CharSet=utf8mb4;SslMode=None;AllowPublicKeyRetrieval=true;"
|
||||
# === 上传 ===
|
||||
Upload__Path: /app/Uploads
|
||||
Upload__BaseUrl: /uploads
|
||||
Upload__MaxSizeBytes: 10485760 # 10MB
|
||||
# === CORS(生产域名按需加) ===
|
||||
Cors__Origins__0: "http://localhost"
|
||||
Cors__Origins__1: "http://localhost:8080"
|
||||
# Cors__Origins__2: "https://yourdomain.com" # ← 改成你的域名
|
||||
# === 日志级别 ===
|
||||
Logging__LogLevel__Default: Information
|
||||
Logging__LogLevel__Microsoft.AspNetCore: Warning
|
||||
Logging__LogLevel__SqlSugar: Information
|
||||
# === 时区 ===
|
||||
TZ: Asia/Shanghai
|
||||
volumes:
|
||||
- uploads-data:/app/Uploads # 上传文件持久化
|
||||
ports:
|
||||
- "8080:8080" # 直连模式(用 Nginx 反代时改 "127.0.0.1:8080:8080")
|
||||
healthcheck: # P47:后端健康检查(K8s / 监控依赖)
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 60s # 首次启动给 60s(编译 + 建表 + 种子)
|
||||
logging: # P47:日志轮转
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
uploads-data:
|
||||
Reference in New Issue
Block a user