码巢引擎2026年开发文档
00-开发规范
后端规范
README
后端开发手册
前端规范
README
TypeScript最佳实践
前端布局规范
前端页面模板
前端颜色与组件规范
核心规范
组件配置手册
问题排查指南
页面模板
最佳实践
README
bp-20260223-m7ps
图片上传优化总结
BUG自动记录系统使用指南
README
TYPE_SAFETY_GUIDE
常见BUG知识库
常见BUG知识库
开发前检查清单
开发安全规范
开发规范-完整版-含FutureBirdAadminAi部署
数据模型字典
文档分类规范
文档标准化规范
文档模板-基础版
文档模板-技术版
类型安全快速参考卡
类型安全规范体系
规范更新指南
过期文档清理机制
错误处理规范
错误预防指南
常见BUG知识库
常见BUG知识库
01-快速开始
Gitee快速开始
README
协作快速开始
快速开始
质量保证快速开始
02-部署指南
Docker更新指南
Docker部署
FutureBirdAadminAi部署指南
FutureBirdAadminAi部署问题分析
README
发布指南
宝塔Docker部署教程
宝塔PM2部署教程
宝塔图形化部署教程
快速发布指南
数据库和依赖变更处理指南
构建和发布
构建标准
构建检查清单
生产部署快速开始
生产部署方案
生产部署标准
生产部署检查清单
程序备份性能
自动修复和发布指南
自动化发布命令使用指南
部署快速开始
部署指南
项目更新部署指南
03-开发指南
Git凭据配置
Git推送规则
Git自动配置
README
全局样式
协作设置
定时任务
开发指南
开发流程
开发环境标准
技术改进
贡献指南
项目目录树
项目目录结构
04-API文档
API接口文档
README
hr-api
企业API
05-数据库
DATABASE_SCHEMA
README
分区指南
数据库字典
数据持久化
数据模型统一
数据迁移
06-架构设计
RBAC-PERMISSIONS
README
SaaS客户引导流程设计
companyId统一规范
employee-permission-system-design
enterprise-data-linkage
仓库实现总结
仓库模式
企业管理端员工权限系统分析
前端架构
前端重构总结
员工权限系统评估报告
员工管理菜单重构方案
权限系统混乱问题分析
架构优化计划
架构使用指南
架构结构
架构结构
状态管理
用户身份管理体系
系统架构
面试管理模块重构规划
项目技术栈
07-测试质量
README
测试修复标准
测试报告
质量保证系统
08-版本管理
CHANGELOG
README
VERSION_RULES
09-配置指南
README
SMTP配置指南
主题切换指南
渠道配置指南
环境变量指南
环境隔离
12-项目记忆
README
知识库导入指南
记忆系统指南
13-迁移指南
README
备份迁移指南
管理员迁移指南
迁移快速开始
17-其他
README
压缩摘要
18-开放平台
01-架构设计
02-API接口设计
03-安全机制
04-前端设计
05-数据库设计
开放平台API指南
开放平台API说明
19-智能进化
AI执行规则
AI进化机制
README
自动化实现总览
黄金规则
40-操作教程
README
微信公众号域名配置指南
微信本地开发调试指南
44-技能文件
alipay-payment-integration
references
checklist
SKILL
audio
python
README
typescript
README
SKILL
database
python
README
typescript
README
SKILL
design-style-thinking
SKILL
doctor
references
sql-patterns
SKILL
document-generation
python
README
SKILL
email
SKILL
embedding
python
README
typescript
README
SKILL
expo-advanced
references
audio-record-play
file-upload
masonry-layout
save-to-gallery
top-tab-navigation
SKILL
feishu-base
SKILL
feishu-message
SKILL
fetch-url
python
README
typescript
README
SKILL
frontend-design
LICENSE
SKILL
FutureBird-coding-web-performance-best-practice
SKILL
general-dev-preview
references
web-preview
SKILL
image-generation
python
README
typescript
README
SKILL
knowledge
references
python
README
typescript
README
cli
SKILL
llm
python
README
typescript
README
SKILL
miniapp-upload-asr
SKILL
pptx-generation
python
README
SKILL
project-memory-loader
scripts
project_memory_loader
SKILL
repair
scripts
merge-commit-map
SKILL
shadcn-web-base-theme
assets
colors
amber
artistic-green
bento-blue
blue
cyan
emerald
fuchsia
gray
green
indigo
lime
low-pink
neutral
orange
purple
red
retro-brown
rose
sky
supbase-green
teal
tech-purple
vintage-grey
violet
yellow
fonts
business
classic
playful
radius
2xl
2xs
lg
md
none
sm
xl
xs
shadow
artistic
bento
cool
retro
superbase
tech
tool
vintage
default
references
colors
fonts
quick
radius
shadows
scripts
theme
SKILL
package
skill-creator-coze
scripts
init_skill
quick_validate
SKILL
storage
python
README
typescript
README
SKILL
supabase
assets
supabase-client
supabase-client
references
_future
asset-supabase-browser
asset-supabase-config-inject
asset-supabase-config-route
python-auth
python-realtime
python-storage
typescript-auth
typescript-realtime
typescript-storage
typescript-supabase-browser
typescript-supabase-config-inject
typescript-supabase-config-route
python
README
database
edge-functions
orm-model-guide
supabase_client
typescript
README
database
drizzle-schema-guide
edge-functions
supabase-client
cli
rls
SKILL
supabase-auth
references
typescript
supabase-browser
supabase-config-inject
supabase-config-route
auth-config
verify-session
SKILL
ui-design-ref
reference
3D黏土风
克莱因蓝高定风
暗黑科技风
杂志风
极光柔和
柔和卡片
玻璃拟态
纯白极简风
自然有机
SKILL
ui-ux-pro-max
scripts
core
design_system
search
SKILL
vercel-composition-patterns
rules
architecture-avoid-boolean-props
architecture-compound-components
patterns-children-over-render-props
patterns-explicit-variants
react19-no-forwardref
state-context-interface
state-decouple-implementation
state-lift-state
AGENTS
SKILL
vercel-react-best-practices
rules
advanced-event-handler-refs
advanced-init-once
advanced-use-latest
async-api-routes
async-defer-await
async-dependencies
async-parallel
async-suspense-boundaries
bundle-barrel-imports
bundle-conditional
bundle-defer-third-party
bundle-dynamic-imports
bundle-preload
client-event-listeners
client-localstorage-schema
client-passive-event-listeners
client-swr-dedup
js-batch-dom-css
js-cache-function-results
js-cache-property-access
js-cache-storage
js-combine-iterations
js-early-exit
js-hoist-regexp
js-index-maps
js-length-check-first
js-min-max-loop
js-set-map-lookups
js-tosorted-immutable
rendering-activity
rendering-animate-svg-wrapper
rendering-conditional-render
rendering-content-visibility
rendering-hoist-jsx
rendering-hydration-no-flicker
rendering-hydration-suppress-warning
rendering-svg-precision
rendering-usetransition-loading
rerender-defer-reads
rerender-dependencies
rerender-derived-state-no-effect
rerender-derived-state
rerender-functional-setstate
rerender-lazy-state-init
rerender-memo-with-default-value
rerender-memo
rerender-move-effect-to-event
rerender-simple-expression-in-memo
rerender-transitions
rerender-use-ref-transient-values
server-auth-actions
server-cache-lru
server-cache-react
server-dedup-props
server-parallel-fetching
server-serialization
AGENTS
SKILL
video-edit
python
README
typescript
README
SKILL
video-generation
python
README
typescript
README
SKILL
volcano-ark
SKILL
web-design-guidelines
SKILL
web-search
python
README
typescript
README
SKILL
webrtc-best-practice
SKILL
websocket-guide
references
nextjs
nodejs
SKILL
wechat-bot
SKILL
wechat-official-account
SKILL
README
README
未来鸟:企业数字化转型奔腾的力量!
-
+
首页
宝塔Docker部署教程
# 宝塔 Docker 部署教程 > 本教程面向不熟悉 Docker 的用户,每个步骤都有详细说明和截图说明。 ## 📋 目录 1. [前置准备](#1-前置准备) 2. [宝塔面板安装](#2-宝塔面板安装) 3. [安装 Docker](#3-安装-docker) 4. [本地构建镜像](#4-本地构建镜像) 5. [上传镜像到服务器](#5-上传镜像到服务器) 6. [配置数据库](#6-配置数据库) 7. [运行容器](#7-运行容器) 8. [配置 Nginx 反向代理](#8-配置-nginx-反向代理) 9. [配置 HTTPS](#9-配置-https) 10. [常见问题](#10-常见问题) --- ## 1. 前置准备 ### 1.1 你需要准备的东西 | 项目 | 说明 | 示例 | |------|------|------| | 服务器 | 一台 Linux 服务器(推荐 CentOS 7.x 或 Ubuntu 20.04) | 阿里云、腾讯云等 | | 域名 | 已备案的域名(可选,用于 HTTPS) | hrm.weilainiao.com | | 数据库 | PostgreSQL 数据库信息 | 主机、端口、用户名、密码、数据库名 | | 项目代码 | 本地开发环境已正常运行 | /workspace/projects | ### 1.2 确认本地项目可以构建 在本地执行: ```bash cd /workspace/projects # 安装依赖 pnpm install # 构建项目 pnpm build # 本地测试运行 pnpm start ``` 如果本地运行正常,说明项目可以部署。 --- ## 2. 宝塔面板安装 ### 2.1 如果你还没有安装宝塔面板 **CentOS 系统**: ```bash yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ``` **Ubuntu 系统**: ```bash wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ``` ### 2.2 安装完成后 终端会显示类似信息: ``` ================================================================== Congratulations! Installed successfully! ================================================================== 外网面板地址: https://xxx.xxx.xxx.xxx:8888/xxxxxxxx 内网面板地址: https://xxx.xxx.xxx.xxx:8888/xxxxxxxx username: xxxxxxxx password: xxxxxxxx ================================================================== ``` **⚠️ 重要**:保存好这些信息! ### 2.3 登录宝塔面板 1. 浏览器打开面板地址 2. 输入用户名和密码 3. 首次登录会推荐安装套件,选择 **LNMP**(Linux + Nginx + MySQL + PHP) 4. 或者可以跳过,我们只需要 Nginx --- ## 3. 安装 Docker ### 3.1 通过宝塔软件商店安装 1. 点击左侧菜单 **软件商店** 2. 搜索 **Docker管理器** 3. 点击 **安装** 4. 等待安装完成(约 2-5 分钟) ### 3.2 验证 Docker 安装 点击 **终端** 按钮,输入: ```bash docker --version ``` 如果显示版本号,说明安装成功: ``` Docker version 24.0.7, build afdd53b ``` --- ## 4. 本地构建镜像 ### 4.1 创建 Dockerfile 在项目根目录创建 `Dockerfile` 文件: ```dockerfile # 使用 Node.js 20 作为基础镜像 FROM node:20-alpine # 设置工作目录 WORKDIR /app # 安装 pnpm RUN npm install -g pnpm # 复制 package.json 和 pnpm-lock.yaml COPY package.json pnpm-lock.yaml ./ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制所有代码 COPY . . # 构建项目 RUN pnpm build # 暴露端口 EXPOSE 5000 # 设置环境变量 ENV NODE_ENV=production ENV PORT=5000 # 启动命令 CMD ["pnpm", "start"] ``` ### 4.2 创建 .dockerignore 文件,我想我是海,哈哈哈 在项目根目录创建 `.dockerignore` 文件,排除不需要的文件: ``` node_modules .next .git *.log .env.local .DS_Store ``` ### 4.3 构建镜像 在本地执行: ```bash cd /workspace/projects # 构建镜像(注意最后有个点) docker build -t weilainiao-hrm:latest . ``` 构建过程会显示: ``` [+] Building 120.5s (15/15) FINISHED => [internal] load build definition from Dockerfile => [internal] load .dockerignore => [internal] load metadata for docker.io/library/node:20-alpine ... => exporting to image => => naming to docker.io/weilainiao-hrm:latest ``` ### 4.4 验证镜像构建成功 ```bash docker images | grep weilainiao-hrm ``` 应该显示: ``` weilainiao-hrm latest abc123def456 2 minutes ago 500MB ``` --- ## 5. 上传镜像到服务器 ### 5.1 方法一:导出上传(推荐新手) **步骤 1:导出镜像为文件** 本地执行: ```bash cd /workspace/projects # 导出镜像(约 1-2 分钟) docker save -o weilainiao-hrm.tar weilainiao-hrm:latest # 查看文件大小 ls -lh weilainiao-hrm.tar ``` **步骤 2:上传到服务器** 方式 A - 使用宝塔文件管理器: 1. 宝塔面板 → 文件 2. 进入 `/root` 目录 3. 点击 **上传** 4. 选择 `weilainiao-hrm.tar` 文件 5. 等待上传完成 方式 B - 使用 SCP 命令: ```bash # 本地执行,替换 your-server-ip scp weilainiao-hrm.tar root@your-server-ip:/root/ ``` **步骤 3:在服务器加载镜像** 宝塔终端执行: ```bash # 加载镜像 docker load -i /root/weilainiao-hrm.tar # 验证 docker images | grep weilainiao-hrm ``` ### 5.2 方法二:Docker Hub(需要账号) 如果你有 Docker Hub 账号: ```bash # 本地执行 docker login docker tag weilainiao-hrm:latest your-username/weilainiao-hrm:latest docker push your-username/weilainiao-hrm:latest # 服务器执行 docker pull your-username/weilainiao-hrm:latest ``` --- ## 6. 配置数据库 ### 6.1 如果你使用外部数据库(如云数据库) 跳过此步骤,只需要记录数据库连接信息: - 主机地址 - 端口(通常 5432) - 用户名 - 密码 - 数据库名 ### 6.2 如果在宝塔安装 PostgreSQL **步骤 1:安装 PostgreSQL** 1. 宝塔面板 → 软件商店 2. 搜索 **PostgreSQL** 3. 点击安装 4. 等待安装完成 **步骤 2:创建数据库** 1. 宝塔面板 → 数据库 2. 点击 **添加数据库** 3. 填写信息: - 数据库名:`hrm_db` - 用户名:`hrm_user` - 密码:`你的密码`(建议使用随机密码) 4. 点击提交 **步骤 3:记录连接信息** ``` DATABASE_URL=postgresql://hrm_user:你的密码@127.0.0.1:5432/hrm_db ``` --- ## 7. 运行容器 ### 7.1 创建配置文件 在服务器创建环境变量文件: ```bash # 宝塔终端执行 mkdir -p /opt/hrm-app cat > /opt/hrm-app/.env << 'EOF' # 数据库连接(修改为你的实际信息) DATABASE_URL=postgresql://hrm_user:你的密码@127.0.0.1:5432/hrm_db # JWT密钥(随机生成一个复杂的字符串) JWT_SECRET=your-super-secret-jwt-key-change-this-in-production-abc123xyz # 服务端口 PORT=5000 DEPLOY_RUN_PORT=5000 # 项目域名(修改为你的域名) FutureBirdAadminAi_PROJECT_DOMAIN_DEFAULT=https://hrm.weilainiao.com FutureBirdAadminAi_PROJECT_ENV=PROD # Node环境 NODE_ENV=production EOF ``` ### 7.2 启动容器 ```bash docker run -d \ --name hrm-app \ --restart always \ -p 5000:5000 \ --env-file /opt/hrm-app/.env \ weilainiao-hrm:latest ``` 参数说明: | 参数 | 说明 | |------|------| | `-d` | 后台运行 | | `--name hrm-app` | 容器名称 | | `--restart always` | 自动重启(服务器重启后自动启动) | | `-p 5000:5000` | 端口映射(主机端口:容器端口) | | `--env-file` | 环境变量文件 | ### 7.3 验证容器运行 ```bash # 查看容器状态 docker ps | grep hrm-app # 查看容器日志 docker logs hrm-app # 实时查看日志 docker logs -f hrm-app ``` 如果看到类似输出,说明启动成功: ``` ▲ Next.js 16.1.1 - Local: http://localhost:5000 - Network: http://172.17.0.2:5000 ✓ Ready in 3.2s ``` ### 7.4 测试访问 ```bash # 在服务器测试 curl http://localhost:5000 ``` --- ## 8. 配置 Nginx 反向代理 ### 8.1 在宝塔创建网站 1. 宝塔面板 → 网站 2. 点击 **添加站点** 3. 填写信息: - 域名:`hrm.weilainiao.com`(你的域名) - PHP版本:纯静态 - 创建数据库:不创建 4. 点击提交 ### 8.2 配置反向代理 1. 点击刚创建网站右侧的 **设置** 2. 点击 **反向代理** 3. 点击 **添加反向代理** 4. 填写信息: - 代理名称:`hrm-app` - 目标URL:`http://127.0.0.1:5000` - 发送域名:`$host` 5. 点击提交 ### 8.3 或者手动修改 Nginx 配置 点击 **配置文件**,修改为: ```nginx server { listen 80; server_name hrm.weilainiao.com; # 强制跳转 HTTPS(如果配置了SSL) # return 301 https://$server_name$request_uri; location / { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; # 超时设置(处理大文件上传) proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } } ``` 保存后,点击 **重载配置**。 ### 8.4 测试访问 浏览器打开:`http://hrm.weilainiao.com` 如果看到登录页面,说明部署成功! --- ## 9. 配置 HTTPS ### 9.1 使用宝塔申请免费 SSL 证书 1. 网站 → 设置 → SSL 2. 选择 **Let's Encrypt** 3. 点击 **申请** 4. 等待申请完成(约 1-2 分钟) ### 9.2 开启强制 HTTPS 1. SSL 页面中,开启 **强制HTTPS** 2. 保存 ### 9.3 测试 HTTPS 访问 浏览器打开:`https://hrm.weilainiao.com` 地址栏应该显示🔒锁图标。 --- ## 10. 常见问题 ### Q1: 容器启动后立即退出 **排查方法**: ```bash # 查看容器日志 docker logs hrm-app ``` **常见原因**: 1. 数据库连接失败 → 检查 DATABASE_URL 2. 端口被占用 → 检查 5000 端口 3. 环境变量缺失 → 检查 .env 文件 ### Q2: 页面显示 502 Bad Gateway **原因**:Nginx 无法连接到后端服务 **排查**: ```bash # 检查容器是否运行 docker ps | grep hrm-app # 检查端口是否监听 netstat -tlnp | grep 5000 # 检查防火墙 # 宝塔面板 → 安全 → 确保 5000 端口开放 ``` ### Q3: 数据库连接失败 **排查**: ```bash # 测试数据库连接 psql -h 127.0.0.1 -U hrm_user -d hrm_db # 检查 PostgreSQL 是否运行 systemctl status postgresql ``` ### Q4: 如何更新部署 ```bash # 1. 停止并删除旧容器 docker stop hrm-app docker rm hrm-app # 2. 加载新镜像 docker load -i /root/weilainiao-hrm-new.tar # 3. 重新运行容器(使用之前的命令) docker run -d --name hrm-app ... # 4. 清理旧镜像 docker image prune ``` ### Q5: 如何查看应用日志 ```bash # 查看最近100行日志 docker logs --tail 100 hrm-app # 实时查看日志 docker logs -f hrm-app # 导出日志到文件 docker logs hrm-app > /root/hrm-app.log ``` ### Q6: 如何备份数据库 ```bash # 在服务器执行 pg_dump -h 127.0.0.1 -U hrm_user hrm_db > /root/hrm_db_backup_$(date +%Y%m%d).sql # 可以设置定时任务自动备份 ``` --- ## 📝 部署检查清单 部署完成后,请逐项检查: - [ ] Docker 容器正在运行 (`docker ps`) - [ ] 端口 5000 正在监听 (`netstat -tlnp | grep 5000`) - [ ] 数据库连接正常 - [ ] HTTP 访问正常 (`http://域名`) - [ ] HTTPS 访问正常 (`https://域名`) - [ ] 登录页面正常显示 - [ ] 登录功能正常 - [ ] 主要功能正常 --- ## 🎉 恭喜! 如果你完成了以上所有步骤,恭喜你成功部署了企业管理系统! 如有问题,请查看常见问题章节或联系技术支持。
未来鸟
2026年7月27日 10:14
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档(打印)
AI