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导致版本迭代引发兼容性问题。

相关推荐
Xudde.5 分钟前
Mr-Robot 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
AOI小白新手上路14 分钟前
DRSformer Rain200H 省钱推理复现笔记
笔记
MIXLLRED24 分钟前
Batch Normalization 学习笔记:γ、β 与 γ>0 的关键限制
笔记·学习·batch
霖霖71427 分钟前
【ESP32笔记】LED操作和呼吸灯实现
笔记·单片机·嵌入式硬件
colinu1 小时前
Docker 容器自启动策略说明与常用命令
运维·docker·容器
灯澜忆梦1 小时前
【docker】#3 | 数据卷挂载
运维·docker·容器
像风一样自由20209 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
滕州市燕猫虎计算机科技工作室个体工商户11 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
志尊宝12 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
后季暖13 小时前
电商问数笔记(2)
笔记