Docker常用中间件部署笔记:MongoDB、Redis、MySQL、Tomcat快速搭建

文章目录

      • 前言
      • [一、MongoDB 部署与用户配置](#一、MongoDB 部署与用户配置)
        • [1. 启动 MongoDB 容器](#1. 启动 MongoDB 容器)
        • [2. MongoDB 用户管理(进入容器执行)](#2. MongoDB 用户管理(进入容器执行))
      • [二、Redis 部署(持久化配置)](#二、Redis 部署(持久化配置))
      • [三、MySQL 5.7 部署与远程访问配置](#三、MySQL 5.7 部署与远程访问配置)
        • [1. 启动 MySQL 容器](#1. 启动 MySQL 容器)
        • [2. 配置 root 远程访问(进入容器执行)](#2. 配置 root 远程访问(进入容器执行))
        • [3. 开放防火墙端口(CentOS 示例)](#3. 开放防火墙端口(CentOS 示例))
      • [四、Tomcat 9 部署(多目录挂载 + 环境配置)](#四、Tomcat 9 部署(多目录挂载 + 环境配置))
      • [五、Docker 全局配置优化(可选)](#五、Docker 全局配置优化(可选))
      • 六、通用注意事项

前言

记录日常开发中常用中间件的 Docker 部署命令、用户配置及问题解决技巧,所有命令均经过实际验证,替换了隐私信息(如原用户名、自定义路径),可直接修改适配自身环境。

一、MongoDB 部署与用户配置

1. 启动 MongoDB 容器
复制代码
# 映射端口27017,数据/配置/日志目录挂载到宿主机,开启权限验证

docker run -d -p 27017:27017 

 -v /home/[自定义用户名]/data/mongodb/data:/data/db 

 -v /home/[自定义用户名]/mongodb/conf:/data/conf 

 -v /home/[自定义用户名]/data/mongodb/log:/data/log 

 --name mongo 

 mongodb:latest 

 --auth
  • 核心参数说明--auth 启用身份验证,必须先创建用户才能操作数据库;挂载目录避免容器删除后数据丢失。
2. MongoDB 用户管理(进入容器执行)
复制代码
# 进入MongoDB容器

docker exec -it mongo mongo admin

# 1. 创建root超级用户(最高权限)

db.createUser({

 user: "root",

 pwd: "【替换为你的强密码】",

 roles: [ { role: "root", db: "admin" } ]

})

# 2. 验证root用户登录

db.auth("root","【替换为你的强密码】")  # 返回1表示验证成功

# 3. 创建数据库管理员用户(仅用户管理权限)

db.createUser({

 user: "admin",

 pwd: "【替换为你的强密码】",

 roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

})

# 4. 给root用户追加用户管理权限(可选)

db.grantRolesToUser( 'root' , [{ role: 'userAdminAnyDatabase' , db: 'admin'}])

# 5. 删除用户(谨慎使用)

db.users.deleteOne({name: "root"})

二、Redis 部署(持久化配置)

复制代码
# 映射端口6379,数据目录/配置文件挂载,开启AOF持久化,自动重启

docker run -p 6379:6379 

 --name=redis 

 --restart=always 

 --privileged=true 

 -v /home/[自定义用户名]/data/redis/data:/data 

 -v /home/[自定义用户名]/redis/redis.conf:/etc/redis/redis.conf 

 -d redis 

 redis-server /etc/redis/redis.conf 

 --appendonly yes
  • 关键说明

    • --appendonly yes 开启 AOF 持久化,数据持久化更可靠;

    • --privileged=true 解决宿主机目录挂载权限问题;

    • 需提前准备redis.conf配置文件(如绑定 IP、密码设置等)。

三、MySQL 5.7 部署与远程访问配置

1. 启动 MySQL 容器
复制代码
# 映射端口3306,日志/数据/配置文件挂载,设置root密码

docker run -d -p 3306:3306 

 --name=mysql-5743 

 --restart=always 

 -v /home/[自定义用户名]/data/mysql/log:/var/log/mysql 

 -v /home/[自定义用户名]/data/mysql/data:/var/lib/mysql 

 -v /home/[自定义用户名]/conf/my.cnf:/etc/mysql/my.cnf 

 -e MYSQL_ROOT_PASSWORD=【替换为你的强密码】 

 mysql:5.7.43
2. 配置 root 远程访问(进入容器执行)
复制代码
# 进入MySQL容器

docker exec -it mysql-5743 mysql -u root -p

# 授权root用户允许所有IP访问(生产环境建议限制指定IP)

grant all privileges on *.* to 'root'@'%' identified by '【替换为你的强密码】' with grant option;

# 刷新权限使配置生效

flush privileges;
3. 开放防火墙端口(CentOS 示例)
复制代码
# 查看3306端口是否开放

firewall-cmd --query-port 3306/tcp

# 永久开放3306端口(生产环境需谨慎,建议结合安全组)

firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重启防火墙生效

firewall-cmd --reload

四、Tomcat 9 部署(多目录挂载 + 环境配置)

复制代码
# 映射端口8090(宿主机):8090(容器),挂载应用/日志/配置/上传目录,设置时区和编码

docker run --name tomcat-8090-80N -d 

 -p 8090:8090 

 -v /home/[自定义用户名]/tomcat/webapps:/usr/local/tomcat/webapps 

 -v /data/tomcat/logs:/usr/local/tomcat/logs 

 -v /home/[自定义用户名]/data/tomcat/idas-logs:/data/idas-logs 

 -v /home/[自定义用户名]/data/tomcat/uploadfiles:/data/uploadfiles 

 -v /home/[自定义用户名]/tomcat/conf:/usr/local/tomcat/conf 

 -e JAVA_OPTS='-server -Dfile.encoding=UTF-8' 

 -e TZ="Asia/Shanghai" 

 --privileged=true 

 --restart=always 

 tomcat:9.0.80
  • 核心配置说明

    • JAVA_OPTS 设置 JVM 参数和文件编码,避免中文乱码;

    • TZ="Asia/Shanghai" 统一容器与宿主机时区;

    • 多目录挂载分别对应:应用部署、Tomcat 日志、业务日志、文件上传、配置文件,便于维护。

五、Docker 全局配置优化(可选)

复制代码
# 替换Docker镜像源配置(加速镜像拉取,根据自身网络选择)

cp /home/[自定义用户名]/tar/daemon.json /etc/docker/daemon.json

# 重启Docker使配置生效

systemctl restart docker

六、通用注意事项

  1. 路径替换 :将所有[自定义用户名]替换为实际宿主机用户名,确保挂载目录存在且权限正确(可通过chmod 777 目录临时测试,生产环境需遵循最小权限原则);

  2. 密码安全:示例中的密码仅为模板,实际使用需设置强密码(字母 + 数字 + 特殊字符),避免明文暴露;

  3. 端口冲突 :启动前检查端口是否被占用(netstat -tuln | grep 端口号),避免端口冲突导致启动失败;

  4. 自动重启--restart=always 确保容器在服务器重启后自动启动,适合生产环境;

  5. 版本锁定 :示例中指定了具体版本(如 MySQL 5.7.43、Tomcat 9.0.80),避免使用latest导致版本迭代引发兼容性问题。

相关推荐
dalong1020 小时前
A11:plus 控件窗口绘图基础
笔记·aardio
历程里程碑20 小时前
Linxu14 进程一
linux·c语言·开发语言·数据结构·c++·笔记·算法
杨浦老苏20 小时前
Docker方式安装你的私人AI电脑助手Moltbot
人工智能·docker·ai·群晖
x70x8020 小时前
# Docker 搭建 MySQL 8 主从复制(踩坑实录 + 完整验证)
mysql·docker·容器
qq_3168377520 小时前
docker 运行 cn_clip
运维·docker·容器
三水不滴21 小时前
Redis 持久化机制
数据库·经验分享·redis·笔记·缓存·性能优化
不断进步的咕咕怪21 小时前
meme分析
笔记
中屹指纹浏览器21 小时前
进程级沙箱隔离与WebGL指纹抗识别:指纹浏览器核心技术难点与工程落地
经验分享·笔记
sayang_shao21 小时前
Rust多线程编程学习笔记
笔记·学习·rust
进阶的猪21 小时前
Qt学习笔记
笔记·学习