孝感数字档案馆系统Docker化部署全流程实操
一、环境基础准备
在开始部署孝感数字档案馆系统之前,需要确保服务器环境满足运行要求。本指南基于CentOS 7.9及以上版本编写,其他Linux发行版命令略有不同。
1. 安装Docker环境
首先卸载旧版本Docker,避免版本冲突,执行以下命令:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装必要的依赖包并配置Docker仓库:
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装最新版Docker Engine并启动服务:
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
2. 验证Docker安装
运行以下命令,如果输出版本信息则表示安装成功:
docker --version
docker compose version
二、系统目录结构规划
为了规范管理,建议在服务器根目录下创建专门的部署目录。孝感数字档案馆系统涉及应用服务、数据库存储、文件存储及日志备份。
执行以下命令创建标准化目录结构:
mkdir -p /opt/xiaogan-archives/{mysql,data,logs,backend,frontend}
mkdir -p /opt/xiaogan-archives/mysql/conf
mkdir -p /opt/xiaogan-archives/mysql/data
mkdir -p /opt/xiaogan-archives/data/ocr
mkdir -p /opt/xiaogan-archives/data/upload
目录用途说明:
- backend:存放后端Jar包及配置文件。
- frontend:存放前端打包后的静态资源。
- mysql/conf:存放MySQL初始化配置文件。
- mysql/data:挂载MySQL数据文件,保证数据不丢失。
- data/upload:挂载用户上传的档案原文。
- data/ocr:存放OCR识别后的临时文件及索引。
三、数据库持久化与初始化
1. MySQL配置文件
创建/opt/xiaogan-archives/mysql/conf/my.cnf文件,写入以下内容。该配置针对档案系统的大文本检索进行了优化:
[mysqld]
user=mysql
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
max_connections=1000
max_allowed_packet=512M
档案系统全文检索优化
ft_min_word_len=2
ngram_token=2
[client]
default-character-set=utf8mb4
2. 数据库初始化脚本
在/opt/xiaogan-archives/mysql目录下创建init.sql文件。这里提供核心表结构的建表语句,包含档案基础表和分类表:
CREATE DATABASE IF NOT EXISTS xiaogan_archives DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE xiaogan_archives;
-- 档案基础信息表
CREATE TABLE `arc_archive` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`archive_no` varchar(64) NOT NULL COMMENT '档号',
`title` varchar(255) NOT NULL COMMENT '题名',
`file_path` varchar(512) DEFAULT NULL COMMENT '原文路径',
`ocr_content` text COMMENT 'OCR识别全文',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_archive_no` (`archive_no`),
FULLTEXT KEY `ft_title_content` (`title`,`ocr_content`) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案基础表';
-- 档案分类表
CREATE TABLE `arc_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(100) NOT NULL,
`parent_id` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 插入默认分类
INSERT INTO `arc_category` (`category_name`, `parent_id`) VALUES ('文书档案', 0);
INSERT INTO `arc_category` (`category_name`, `parent_id`) VALUES ('科技档案', 0);
INSERT INTO `arc_category` (`category_name`, `parent_id`) VALUES ('会计档案', 0);
四、后端应用配置详解
假设后端应用为Spring Boot架构。在/opt/xiaogan-archives/backend目录下创建application.yml配置文件。请确保数据库密码与后续Docker Compose中设置的一致。
server:
port: 8080
servlet:
context-path: /api
multipart:
max-file-size: 500MB
max-request-size: 500MB
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql-master:3306/xiaogan_archives?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: Xiaogan@2024Arch
jpa:
hibernate:
ddl-auto: none
show-sql: true
Redis配置(如有缓存需求)
redis:
host: redis-master
port: 6379
password: XiaoganRedis@2024
档案系统专用配置
archive:
文件存储根路径(容器内路径)
storage-path: /app/data/upload
OCR引擎配置
ocr:
enabled: true
engine: tesseract
language: chi_sim
datapath: /usr/share/tesseract-ocr/4.00/tessdata
配置关键点解析:
- datasource.url: 主机名必须填写为
mysql-master,这是Docker内部网络的服务名,不能写localhost或127.0.0.1。 - storage-path: 这是容器内部的路径,稍后会通过Volume映射到宿主机。
- multipart.maxFileSize: 档案系统通常包含扫描件,大小限制建议放宽至500MB。
五、OCR识别组件配置

孝感数字档案馆系统核心功能之一是全文检索。我们需要构建一个包含Tesseract OCR引擎的镜像,或者直接在Docker Compose中引用官方镜像并挂载中文语言包。
在/opt/xiaogan-archives目录下创建Dockerfile用于构建后端镜像(假设本地已有jar包xiaogan-archives.jar):
FROM openjdk:17-jdk-slim
安装Tesseract OCR及中文语言包
RUN apt-get update && apt-get install -y \
tesseract-ocr \
tesseract-ocr-chi-sim \
&& rm -rf /var/lib/apt/lists/
WORKDIR /app
将构建好的jar包复制进去
COPY xiaogan-archives.jar app.jar
创建数据目录
RUN mkdir -p /app/data/upload
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
注意: 请确保已将编译好的xiaogan-archives.jar文件上传至/opt/xiaogan-archives/backend目录。
六、容器编排与启动
在/opt/xiaogan-archives目录下创建docker-compose.yml文件。此文件定义了MySQL、Redis、后端服务及Nginx的完整编排。
version: '3.8'
services:
MySQL数据库服务
mysql-master:
image: mysql:8.0
container_name: xiaogan-mysql
environment:
MYSQL_ROOT_PASSWORD: Xiaogan@2024Arch
MYSQL_DATABASE: xiaogan_archives
volumes:
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/data:/var/lib/mysql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3306:3306"
networks:
- xiaogan-net
restart: always
Redis缓存服务
redis-master:
image: redis:6.2-alpine
container_name: xiaogan-redis
command: redis-server --requirepass XiaoganRedis@2024
ports:
- "6379:6379"
networks:
- xiaogan-net
restart: always
后端应用服务
backend-app:
build:
context: .
dockerfile: Dockerfile
container_name: xiaogan-backend
volumes:
- ./data:/app/data
- ./backend/application.yml:/app/application.yml
ports:
- "8080:8080"
depends_on:
- mysql-master
- redis-master
networks:
- xiaogan-net
restart: always
前端Nginx服务
frontend-nginx:
image: nginx:alpine
container_name: xiaogan-frontend
volumes:
- ./frontend/dist:/usr/share/nginx/html
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- "80:80"
depends_on:
- backend-app
networks:
- xiaogan-net
restart: always
networks:
xiaogan-net:
driver: bridge
Nginx配置文件:
在同级目录下创建nginx.conf,用于反向代理解决跨域问题并转发API请求:
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
前端静态资源
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
后端接口转发
location /api/ {
proxy_pass http://backend-app:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
启动系统:
确保前端打包文件已放入./frontend/dist目录,然后在/opt/xiaogan-archives目录下执行:
docker compose up -d --build
七、服务验证与日志排查
1. 服务状态检查
执行以下命令查看所有容器状态,确保Exit代码为0且Status为Up:
docker ps -a
2. 数据库初始化验证
进入MySQL容器检查表是否自动创建:
docker exec -it xiaogan-mysql mysql -uroot -pXiaogan@2024Arch -e "USE xiaogan_archives; SHOW TABLES;"
3. 后端日志查看
如果启动失败,查看后端日志定位问题。常见错误通常是数据库连接超时,需要稍等片刻让MySQL完全启动:
docker logs -f xiaogan-backend
4. 访问测试
打开浏览器访问服务器IP地址(例如 http://192.168.1.100)。此时应能看到孝感数字档案馆系统的登录界面。上传一份包含中文的PDF或图片文件,检查后台日志是否出现Tesseract识别日志,验证OCR功能是否正常。