Docker-Compose 集成SpringBoot + redis + mysql

1.首先构建Springboot项目

1.1、在Dos窗口使用cd命令切换到项目目录下

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot

1.2、在Dos窗口下执行 mvn package -P dev-docker docker:build

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot_02

1.3、运行docker image ls,列出所有本地镜像

cnetos7使用docker运行springboot jar项目 docker compose springboot_java_03

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

图文解释

cnetos7使用docker运行springboot jar项目 docker compose springboot_java_04

4、切换到DockerIntegrate目录下执行下面命令

docker-compose up -d

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot_05

5、使用命令 docker ps 查看docker启动项

以下看到三个服务,springboot项目+redis+mysql 服务全部启动成功,并且port 都做好了本地映射

cnetos7使用docker运行springboot jar项目 docker compose springboot_mysql_06

6.接下来就可以使用宿主机的图形工具连接docker中的redis

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot_07

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**

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot_08

做到这一步,docker中的mysql,redis 就可以使用宿主机连接了,并且springboot项目也就启动起来了,如果因为前期mysql没有做root授权,导致springboot项目启动的时候导致连接不到数据库,只需要做好root授权,以后,单独重新启动springboot项目即可

cnetos7使用docker运行springboot jar项目 docker compose springboot_spring boot_09

**文章到这里就结束了,如果有任何疑问可以私信我或者评论区下方**