Docker:部署MySQL,Redis,RabbitMQ
MySQL配置
安装
# 创建Docker挂载路径
sudo mkdir -p /DockerVolume
# 下载MySQL5.7的docker镜像
docker pull mysql:5.7
# 创建MySQL容器
docker run -p 3306:3306 --name mysql -d \
-v /DockerVolume/mysql/log:/var/log/mysql \
-v /DockerVolume/mysql/data:/var/lib/mysql \
-v /DockerVolume/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD='your_password' mysql:5.7
踩过的坑:
- 由于权限问题,需要先创建/DockerVolume目录,再进行挂载,否则无法创建成功。
- 由于Linux命令行中,使用个别特殊字符(如:'!','$')进行解析,所以密码存在'!','$'等特殊字符时,需要用单引号。
- 在Spring项目的配置文件'application.yml'中,如果密码存在特殊字符,也会导致密码错误。需要用单引号。
如果启动失败,可以通过以下方式启动:
```bash
1. 拉去镜像
$ sudo docker pull mysql:5.7
2. 创建目录
$ mkdir /DockerVolume/mysql/datadir -p
2. 启动镜像
$ sudo docker run --name=mysql -d -p 3306:3306 --volume /etc/localtime:/etc/localtime --volume /DockerVolume/mysql/datadir:/var/lib/mysql:z -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3. 配置远程连接
3.1 进入docker容器
$ sudo docker exec -it mysql /bin/bash
3.2 进入mysql,密码:123456
$ mysql -uroot -p
3.3 查询远程连接的用户配置
> select user,password,host from mysql.user;
3.4 修改权限:%代表允许所有IP访问,your_password修改为自己的密码
> grant all privileges on *.* to root@"%" identified by "your_password";
3.5 刷新权限
> flush privileges;
Redis配置
docker pull redis:5
# 创建Redis容器,${your_password}:替换为你的密码
docker run -d \
-e REDIS_PASSWORD='${your_password}' \
-v /DockerVolume/redis/data:/data \
-p 6379:6379 \
--name redis \
redis:5 /bin/sh -c 'redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}'
Rabbitmq
docker pull rabbitmq:3.7.15
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq -d rabbitmq:3.7.15
## 进入rabbitmq容器,开启管理功能
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
打开防火墙
sudo firewall-cmd --zone=public --add-port={15672,5672,6379,3306}/tcp --permanent
sudo firewall-cmd --reload