Docker 部署
概述
Docker 部署方式支持使用 Docker 容器运行沐霖工时管理系统应用,数据库和 Redis 使用外部独立部署的服务。
优势
- ✅ 应用容器化: 应用运行环境标准化
- ✅ 外部数据库: 使用独立的 MySQL 和 Redis 服务
- ✅ 灵活配置: 支持云数据库或自建数据库
- ✅ 易于维护: 应用更新只需替换容器
- ✅ 资源隔离: 应用与系统环境隔离
适用场景
- 已有独立的 MySQL 和 Redis 服务
- 使用云数据库服务(如阿里云 RDS、腾讯云 Redis)
- 需要标准化应用运行环境
- 多实例部署和负载均衡
前置要求
- Docker: 20.10+
- MySQL: 5.7+ 或 8.0+(外部服务)
- Redis: 6.0+(外部服务)
部署步骤
第一步:准备外部服务
确保以下服务已经运行并可访问:
- MySQL: 5.7+ 或 8.0+
- Redis: 6.0+
第二步:创建数据库
sql
-- 登录 MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE mulin_cost DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 退出
exit;第三步:下载 Docker 部署包
从公众号获取 Docker 部署包,或者从release页面下载。
公众号获取
关注「沐霖工时管理系统」微信公众号,在菜单栏选择**"沐霖工时系统下载"**,选择 Docker 部署包下载。
公众号信息:
- 公众号ID: wuyusoft
二维码:

操作步骤:
- 使用微信扫描下方二维码
- 关注公众号
- 在底部菜单栏选择"沐霖工时系统下载"
- 选择"Docker 部署包"
- 根据提示获取最新版本
第四步:创建目录并解压
bash
# 创建项目目录
mkdir -p /opt/mulin-cost
cd /opt/mulin-cost
# 将下载的部署包解压到该目录
# 假设下载的文件名为 mulin-cost-docker.tar.gz
tar -xzf mulin-cost-docker.tar.gz -C /opt/mulin-cost
# 创建必要的子目录
mkdir -p data/uploads
mkdir -p logs目录结构如下:
/opt/mulin-cost/
├── mulin # 二进制程序
├── application.yaml # 配置文件
├── data/
│ └── uploads/ # 上传文件目录
└── logs/ # 日志目录第五步:修改配置文件
编辑 /opt/mulin-cost/application.yaml:
yaml
# 服务器配置
server:
port: 8080
mode: release
# 数据库配置(修改为实际的外部数据库地址)
db:
host: your-mysql-host # 修改为实际的 MySQL 地址
port: 3306
user: root
password: your-password # 修改为实际的密码
name: mulin_cost
maxIdleConns: 10
maxOpenConns: 100
# Redis 配置(修改为实际的 Redis 地址)
redis:
host: your-redis-host # 修改为实际的 Redis 地址
port: 6379
password: "" # 如果有密码则填写
db: 0
# 日志配置
log:
level: info
file: logs/app.log
max_size: 100
max_backups: 10
max_age: 30第六步:启动容器
使用 Alpine Linux 容器直接运行二进制程序:
bash
docker run -d \
--name mulin_app \
-p 8080:8080 \
-v /opt/mulin-cost/data/uploads:/app/uploads \
-v /opt/mulin-cost/logs:/app/logs \
-v /opt/mulin-cost/application.yaml:/app/application.yaml \
-v /opt/mulin-cost/mulin:/app/mulin \
-v /etc/localtime:/etc/localtime \
-e TZ=Asia/Shanghai \
--restart always \
alpine:latest \
/app/mulin参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
-p 8080:8080 | 端口映射 | -p 8080:8080 或 -p 9090:8080 |
-v uploads | 上传文件目录 | /opt/mulin-cost/data/uploads:/app/uploads |
-v logs | 日志目录 | /opt/mulin-cost/logs:/app/logs |
-v application.yaml | 配置文件 | /opt/mulin-cost/application.yaml:/app/application.yaml |
-v mulin | 二进制程序 | /opt/mulin-cost/mulin:/app/mulin |
-v /etc/localtime | 时区同步 | 保持容器与宿主机时间一致 |
-e TZ | 时区环境变量 | Asia/Shanghai |
alpine:latest | 基础镜像 | 轻量级 Linux 发行版 |
/app/mulin | 启动命令 | 直接运行二进制程序 |
--restart | 重启策略 | always 或 unless-stopped |
第七步:验证部署
查看容器状态
bash
docker ps应该能看到 mulin_app 容器正在运行。
查看容器日志
bash
docker logs -f mulin_app访问系统
打开浏览器访问:
http://your-server-ip:8080默认管理员账号:
- 用户名: admin
- 密码: 12345678
注意:首次登录后请立即修改密码!
何时使用 Docker vs Docker Compose
使用 Docker 单独部署:
- ✅ 已有外部 MySQL 和 Redis 服务
- ✅ 使用云数据库(RDS、Redis 云服务等)
- ✅ 需要灵活的网络配置
- ✅ 与其他服务混合部署
使用 Docker Compose 部署:
- ✅ 需要一键启动所有服务(包括数据库和 Redis)
- ✅ 开发环境和测试环境
- ✅ 不想单独安装 MySQL 和 Redis
- ✅ 需要快速搭建完整环境
常用操作
停止容器
bash
docker stop mulin_app启动容器
bash
docker start mulin_app重启容器
bash
docker restart mulin_app删除容器
bash
docker stop mulin_app
docker rm mulin_app查看日志
bash
# 查看实时日志
docker logs -f mulin_app
# 查看最近 100 行日志
docker logs --tail 100 mulin_app
# 查看指定时间范围的日志
docker logs --since 2024-01-01T00:00:00 mulin_app进入容器
bash
docker exec -it mulin_app /bin/sh更新应用
bash
# 1. 停止旧容器
docker stop mulin_app
docker rm mulin_app
# 2. 替换二进制文件
cp new-mulin /opt/mulin-cost/conf/mulin
# 3. 重新构建镜像
cd /opt/mulin-cost/conf
docker build -t mulin-cost:latest .
# 4. 启动新容器
docker run -d \
--name mulin_app \
-p 8080:8080 \
-v /opt/mulin-cost/data/uploads:/app/uploads \
-v /opt/mulin-cost/logs:/app/logs \
-v /opt/mulin-cost/conf/application.yaml:/app/application.yaml \
-v /etc/localtime:/etc/localtime \
-e TZ=Asia/Shanghai \
--restart always \
mulin-cost:latest配置 Nginx 反向代理(可选)
如果需要通过域名访问,可以配置 Nginx:
nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
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;
}
}数据备份
备份 MySQL 数据库
bash
# 备份到本地(使用外部 MySQL 命令)
mysqldump -h your-mysql-host -u root -p mulin_cost > backup_$(date +%Y%m%d).sql
# 压缩备份
mysqldump -h your-mysql-host -u root -p mulin_cost | gzip > backup_$(date +%Y%m%d).sql.gz恢复数据库
bash
# 从备份恢复
mysql -h your-mysql-host -u root -p mulin_cost < backup_20240101.sql
# 从压缩备份恢复
gunzip < backup_20240101.sql.gz | mysql -h your-mysql-host -u root -p mulin_cost备份上传文件
bash
tar -czf uploads_backup_$(date +%Y%m%d).tar.gz /path/to/uploads/下一步
- 查看 Docker Compose 部署 了解一键部署所有服务
- 查看 单程序部署 了解更简单的部署方式
- 查看 快速开始 了解系统使用
