文章目录
-
-
- 前言
- [一、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
六、通用注意事项
-
路径替换 :将所有
[自定义用户名]替换为实际宿主机用户名,确保挂载目录存在且权限正确(可通过chmod 777 目录临时测试,生产环境需遵循最小权限原则); -
密码安全:示例中的密码仅为模板,实际使用需设置强密码(字母 + 数字 + 特殊字符),避免明文暴露;
-
端口冲突 :启动前检查端口是否被占用(
netstat -tuln | grep 端口号),避免端口冲突导致启动失败; -
自动重启 :
--restart=always确保容器在服务器重启后自动启动,适合生产环境; -
版本锁定 :示例中指定了具体版本(如 MySQL 5.7.43、Tomcat 9.0.80),避免使用
latest导致版本迭代引发兼容性问题。