Linux 系统 Docker 离线部署 DzzOffice 完整教程
本次部署采用docker-compose生产级编排方案,使用官方维护的xiaohu2023/dzzoffice:latest镜像(每日同步最新源码,内置完整程序包,无需启动时联网下载,完美适配离线环境),全套依赖包含DzzOffice主程序、MariaDB数据库、Redis缓存,全程无联网依赖。
核心前提说明
架构一致性要求:联网拉取镜像的机器,必须与离线目标服务器CPU架构完全一致(如均为amd64/x86_64,或均为arm64),否则镜像无法正常运行。
环境要求:离线服务器为Linux系统(CentOS7+/Ubuntu20.04+/Debian10+),最低2核4G内存、20G以上空闲硬盘,具备root权限;测试环境可使用单容器极简部署,生产环境推荐完整编排方案。
设备准备:1台可联网的Linux辅助机器(用于下载镜像和安装包)、1台目标离线Linux服务器、SSH/文件传输工具。
一、离线服务器:Docker & Docker Compose 离线安装
若离线服务器已安装Docker 20.10+、Docker Compose v2+,可直接跳过此步骤。
步骤1:联网机下载对应安装包
Docker二进制包:访问Docker官方稳定版下载页,选择与离线服务器架构匹配的最新版本tgz包(如amd64架构的docker-26.0.2.tgz)。
Docker Compose二进制文件:访问Compose官方发布页,选择对应架构的最新版文件(如docker-compose-Linux-x86_64)。
步骤2:离线服务器安装Docker
将Docker tgz包上传至离线服务器,执行以下命令:
# 解压压缩包tar -zxvf docker-*.tgz# 复制二进制文件到系统目录cp docker/* /usr/bin/# 配置Docker systemd开机自启服务cat > /etc/systemd/system/docker.service << EOF[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyExecStart=/usr/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDTimeoutSec=0RestartSec=2Restart=alwaysLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityTasksMax=infinityDelegate=yesKillMode=process[Install]WantedBy=multi-user.targetEOF# 重载配置、启动Docker、设置开机自启systemctl daemon-reloadsystemctl start dockersystemctl enable docker# 验证安装是否成功docker --version
步骤3:离线服务器安装Docker Compose
将Compose二进制文件上传至离线服务器,执行以下命令:
# 移动到系统目录并重命名mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose# 赋予执行权限chmod+x /usr/local/bin/docker-compose# 验证安装是否成功docker-compose --version
二、联网机:拉取并导出DzzOffice全套镜像
在联网辅助机器上执行以下命令,拉取最新版镜像并导出为离线传输专用的tar包:
# 1. 拉取最新镜像(latest标签每日同步DzzOffice最新源码)docker pull xiaohu2023/dzzoffice:latestdocker pull mariadb:ltsdocker pull redis:alpine# 2. 导出镜像为tar包docker save -o dzzoffice.tar xiaohu2023/dzzoffice:latestdocker save -o mariadb.tar mariadb:ltsdocker save -o redis.tar redis:alpine
执行完成后,当前目录会生成dzzoffice.tar、mariadb.tar、redis.tar三个镜像包,即为离线部署的核心文件。
三、离线服务器:导入镜像
在离线服务器创建专用部署目录,并将所有镜像包、配置文件上传至该目录:
mkdir-p /opt/dzzoffice && cd /opt/dzzoffice
执行镜像导入命令:
docker load -i dzzoffice.tardocker load -i mariadb.tardocker load -i redis.tar
验证导入结果,确认3个镜像均正常显示:
docker images
四、配置编排文件与持久化,启动服务
步骤1:创建数据库环境变量配置文件
在/opt/dzzoffice目录下创建db.env,用于存放数据库敏感配置,避免硬编码(建议修改默认密码为强密码):
# 数据库名(无需提前手动创建,安装时程序自动生成)MYSQL_DATABASE=dzzoffice# 普通数据库用户名MYSQL_USER=dzzoffice# 普通数据库用户密码MYSQL_PASSWORD=Dzzoffice@2026# 数据库root用户密码MYSQL_ROOT_PASSWORD=DzzofficeRoot@2026
步骤2:创建docker-compose.yml编排文件
在同一目录下创建docker-compose.yml,生产级配置,包含数据持久化、网络隔离、开机自启:
version: '3.5'# 自定义隔离网络,避免与其他服务冲突networks: dzzoffice-net: driver: bridgeservices:# MariaDB数据库服务 db: image: mariadb:lts container_name: dzzoffice-db restart: always networks: - dzzoffice-net command: --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes:# 数据库数据持久化,容器删除数据不丢失 - ./db:/var/lib/mysql env_file: - db.env environment: - MARIADB_AUTO_UPGRADE=1 - MARIADB_DISABLE_UPGRADE_BACKUP=1# Redis缓存服务 redis: image: redis:alpine container_name: dzzoffice-redis restart: always networks: - dzzoffice-net volumes:# 缓存数据持久化 - ./redis:/data# DzzOffice主程序服务 app: image: xiaohu2023/dzzoffice:latest container_name: dzzoffice-app restart: always networks: - dzzoffice-net ports:# 主机端口:容器端口,可修改左侧8080为自定义访问端口 - "8080:80" volumes:# 站点全量数据持久化,包含程序、附件、配置文件 - ./site:/var/www/html environment:# 数据库地址,对应上方数据库服务名db,不可修改 - MYSQL_HOST=db# Redis地址,对应上方缓存服务名redis,不可修改 - REDIS_HOST=redis depends_on: - db - redis
步骤3:创建持久化目录并启动服务
# 确保在部署目录内cd /opt/dzzoffice# 创建持久化目录mkdir -p db redis site# 后台启动全套服务docker-compose up -d# 查看服务运行状态,确认3个容器均为Up状态docker-compose ps
步骤4:修复目录权限(必做)
挂载持久化目录后,需修复站点目录权限,否则安装时会出现读写权限报错:
docker exec -it dzzoffice-app chown -R www-data:www-data /var/www/html
五、DzzOffice初始化安装与验证
访问安装页面:浏览器打开 http://离线服务器IP:8080,自动跳转到安装向导页面。
环境检测:确认所有环境检测项均为通过状态,点击下一步。
数据库配置:填写db.env中配置的数据库信息,关键参数如下:
管理员账号设置:设置管理员账号、密码、邮箱,完成安装。
登录验证:
关键注意事项
离线功能限制:DzzOffice核心功能完全支持离线使用,但部分第三方插件(如永中Office预览、在线地图等)依赖公网服务,离线环境无法正常使用。
数据备份:定期备份/opt/dzzoffice整个目录,包含所有配置、数据库、附件数据,重装/升级时直接恢复即可。
防火墙配置:若服务器开启了firewalld/ufw,需放行自定义的访问端口(如8080),示例:
# firewalld放行端口firewall-cmd --add-port=8080/tcp --permanentfirewall-cmd --reload
版本升级:离线环境升级,需在联网机重新拉取最新镜像、导出tar包,到离线服务器导入新镜像后,执行docker-compose up -d重启即可,持久化数据不会丢失。
测试环境极简单容器部署
若仅用于快速测试,无需高可用配置,可使用内置SQLite的单容器方案,步骤如下:
联网机拉取并导出镜像:
docker pull land007/dzzoffice:latestdocker save -o dzzoffice-single.tar land007/dzzoffice:latest
离线服务器导入镜像:
docker load -i dzzoffice-single.tar
启动容器:
docker run -d --name dzzoffice -p 8080:80 -v ./dzzdata:/var/www/html/data --restart always land007/dzzoffice:latest# 修复目录权限docker exec -it dzzoffice chown -R www-data:www-data /var/www/html/data
访问http://服务器IP:8080,按向导完成安装即可,无需额外配置数据库。