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

相关推荐
Zfox_2 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
JustDI-CM3 小时前
AI学习笔记-提示词工程
人工智能·笔记·学习
春日见3 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
爱写bug的野原新之助3 小时前
加密摘要算法MD5、SHA、HMAC:学习笔记
笔记·学习
DARLING Zero two♡3 小时前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
liu****4 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
小乔的编程内容分享站4 小时前
C语言笔记之函数
c语言·笔记
四谎真好看4 小时前
JavaWeb学习笔记(Day13)
笔记·学习·学习笔记·javaweb
logocode_li5 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s
承渊政道5 小时前
Linux系统学习【Linux基础开发工具】
linux·运维·笔记·学习·centos·编辑器