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

相关推荐
奔波霸的伶俐虫18 小时前
windows docker desktop 安装修改镜像学习
学习·docker·容器
时兮兮时18 小时前
CALIPSO垂直特征掩膜(VFM)—使用python绘制主类型、气溶胶和云的子类型
笔记·python·calipso
阿杰 AJie18 小时前
安装 docker.io(不走外网 Docker 域名)
docker·容器·eureka
时兮兮时18 小时前
MODIS Land Cover (MCD12Q1 and MCD12C1) Product—官方文档的中文翻译
笔记·mcd12q1
.hopeful.18 小时前
Docker——镜像仓库和镜像
运维·docker·容器
时兮兮时18 小时前
Linux 服务器后台任务生存指南
linux·服务器·笔记
CodeCaptain18 小时前
Dify结合vllm-openai docker镜像出现docker: invalid reference format问题的解决方案
运维·docker·容器
_Kayo_18 小时前
Node.js 学习笔记6
笔记·学习·node.js
忍冬行者18 小时前
k8s的etcd的一键备份和故障恢复
docker·云原生·容器·kubernetes·云计算