Docker-Compose 集成SpringBoot + redis + mysql
1.首先构建Springboot项目
1.1、在Dos窗口使用cd命令切换到项目目录下
1.2、在Dos窗口下执行 mvn package -P dev-docker docker:build
1.3、运行docker image ls,列出所有本地镜像
2.首先创建一个空目录,例如 DockerIntegrate
3.在DockerIntegrate目录下创建一个文件,文件名为docker-compose.yml
version: '3'
services:
# 指定服务名称
xgs:
# 指定服务使用的镜像(这个镜像是已经构建好的jar包)
image: springio/xgs:latest
# 指定容器名称
container_name: xgs-comp
# 指定服务运行的端口
ports:
- 18888:8888
redis:
image: redis:5.0.14
restart: always
container_name: my_redis
# Redis 的密码需要自己在与容器共享的配置 redis.conf 中加入,即更改配置中 requirepass yourpassword
command: redis-server /Users/mac/Documents/DockerHome/app/redis/conf/redis.conf
# 直接在其所在目录下执行 docker-compose up -d,即可在 Docker 中生成一个带密码的 Redis 容器。
command: redis-server --requirepass 123456
ports:
- "6380:6379"
volumes:
- /Users/mac/Documents/DockerHome/app/redis/data:/data
- /Users/mac/Documents/DockerHome/app/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
# 容器与宿主机时间同步
- /etc/localtime:/etc/localtime
environment:
TIME_ZONE: Asia/Beijing
mysql57:
image: mysql/mysql-server:5.7
ports:
- "3307:3306"
environment:
- MYSQL_ROOT_PASSWORD=123
volumes:
- /Users/mac/Documents/DockerHome/app/mysql/data:/var/lib/mysql
deploy:
placement:
constraints:
- node.hostname==mysqld
restart_policy:
condition: on-failure
图文解释
4、切换到DockerIntegrate目录下执行下面命令
docker-compose up -d
5、使用命令 docker ps 查看docker启动项
以下看到三个服务,springboot项目+redis+mysql 服务全部启动成功,并且port 都做好了本地映射
6.接下来就可以使用宿主机的图形工具连接docker中的redis
7.因为mysql还需要做一些配置才可以使用宿主机连接
7.1、从容器中连接到mysql服务器
docker exec -it mysql1 mysql -uroot -p
#切换到mysql数据库下
use mysql
#修改root的host为%
update user set host='%' where user='root'
#刷新,否则不生效
FLUSH PRIVILEGES;
#给root进行授权,并设置密码123
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
#刷新,否则不生效
FLUSH PRIVILEGES;
**然后使用本机IP+映射的端口号即可访问docker中的mysql**
做到这一步,docker中的mysql,redis 就可以使用宿主机连接了,并且springboot项目也就启动起来了,如果因为前期mysql没有做root授权,导致springboot项目启动的时候导致连接不到数据库,只需要做好root授权,以后,单独重新启动springboot项目即可
**文章到这里就结束了,如果有任何疑问可以私信我或者评论区下方**