Docker部署Springboot、Mysql、Redis

前言:为了解决我们每次部署项目需要在linux上面下载安装软件,耗费了我们很多的时间,而且有时候我们需要我们的工程在别人的linux上面部署,这个时候别人的linux没有下载我们需要的环境,这个时候就很麻烦,所以我们用虚拟化容器技术:docker来解决问题

一、linu上安装docker和docker-compose

yum包更新到最新

yum update

安装需要的软件包 yum-utils提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker,出现选项全部填y,回车(可能会持续15分钟,去干点其他事情把)

yum install -y docker-ce

查看docker版本,看是否安装成功

docker -v

出现下面这行,则代表安装成功


上面我们成功安装了docker,下面我们来安装一下docker-compose,有了这个,我们才能使我们写的docker-compose.yml文件生效

一、将编译好的二进制文件放到我们的linux系统中(这一步时间可能有点久,稍微耐心等一下把)

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

二、设置文件可执行的权限

chmod +x /usr/local/bin/docker-compose

三、查看版本信息

docker-compose -version

二、配置镜像加速器

阿里云、腾讯云、华为云都有此服务,免费的

这里以阿里云为例子

然后右边就会有加速器地址、教程,跟着操作就行了,这里就不再贴出来了,不懂的评论区留言

三、项目部署

 1、打包你的springboot项目(idea里面的右侧Maven按钮点击出来就有了)

 2、在你的classpath会生成一个target的黄色文件夹,里面有一个jar包,将它ctrl+X下来,放到你想放的地点(不要忘记了就行)

3、将这个文件上传到服务器上面,我这里用的是finalShell,还挺好用的,直接上传就行,不用使用命令

第3步之前,可以先在我们的root目录创建一个文件夹,放到里面去,类似下面

#代表注释

# 进入到root目录
cd ~

# 创建一个docker-compose文件夹
mkdir docker-compose

# 进入到这个文件夹中
cd docker-compose

4、编写我们的Dockfile文件,需要放在我们刚刚创建的docker-compose里面

#代表注释

# 创建一个文件,用于将我们的jar包生成镜像,有了镜像我们就能生成容器来使用了,这里只是单纯范讲,大家如果想要详细了解docker的话可以自己去看一下b站的课程
vim Dockerfile

Deckerfile文件如下

# 设置jdk版本
FROM java:8

# 设置我们的个人信息,大家根据需求随便写
MAINTAINER xxx <xxx@XXX.com>

# 这两行是设置我们容器内的时间以及jvm的时间(默认不是GMT)
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

# 前面的xxxxxx是我们上传的jar包名称,后面的是我们新命名的jar包
ADD xxxxxx.jar xxxxxx.jar
# 执行我们的jar包,xxx是上面刚命名的新名字
CMD java -jar xxx.jar

键盘按esc,加英文冒号:,输入wq,回车即可保存
快捷键的话可以点击键盘shift+两下Z即可

现在我们的docker-compose文件夹下面就有了一个jar包和一个Dockerfile文件

5、编写我们最重要的文件:docker-compose.yml

#表示注释

# 指定我们docker-compose的版本
version: "3"

# 设置我们的服务
services:

  # 配置mysql服务
  mysql:

    # 这里指定我们的镜像文件,mysql版本是5.7,这里要使用docker命令拉取镜像,这里先写着,后面我教大家怎么拉取镜像
    image: mysql:5.7

    # 配置我们容器的名字
    container_name: mysql

    # 通过我们的宿主机的3306端口映射到容器里的3306端口,因为容器内的网络与我们外界是不互通的,只有宿主机能够去访问我们的容器,这样我们就能通过宿主机的3306端口去访问容器的mysql了
    ports:
      - "3306:3306"

    # 配置环境,主要是配置我们的mysql的登陆密码,mysql容器创建出来默认可以用不同的ip地址访问,所以这里不用进行配置
    environment:
      - MYSQL_ROOT_PASSWORD=root
    
    # 配置挂载的文件夹,在当前文件夹下面创建mysql文件夹,里面有conf,logs,data,分别挂载到容器mysql中的conf.d,logs,mysql中,这样当我们的容器如果没了,但是我们的数据还是在的
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
  
  # 配置redis服务
  redis:

    # 设置容器对应的镜像,同上,等下详细讲
    image: redis:5.0

    # 设置容器名
    container_name: redis
    
    # 设置命令,这里是用来设置我们的redis登陆密码的,root处是密码,自己根据需求填入即可
    command: redis-server --requirepass root

    # 同上,作为端口映射
    ports:
      - "6379:6379"
    
    # 同上,挂载文件夹
    volumes:
      - ./redis:/data

  # 配置springboot服务
  springboot:
    # 生成镜像,用.它会自动去当前目录下面去找一个Dockerfile的文件,然后根据里面的配置去生成一个镜像
    build: .
    
    # 指定我们生成的镜像的名字和版本号
    image: springboot:v1.0.0

    # 指定容器名
    container_name: springboot
    
    # 同上,做端口映射
    ports:
      - "8080:8080"
    
    # 写清楚我们springboot依赖的服务,有mysql以及redis,这里的名称是service名
    depends_on:
      - mysql
      - redis

上面写清楚注释是方便大家阅读,我这里再贴一份没有注释的,大家直接拿来食用即可

FROM java:8

MAINTAINER PEACEUAI <PEACEUAI@XXX.com>

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

ADD xxxxxx.jar app.jar
CMD java -jar app.jar                                                                                                                               
version: "3"
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
  redis:
    image: redis:5.0
    container_name: redis
    command: redis-server --requirepass root
    ports:
      - "6379:6379"
    volumes:
      - ./redis:/data
  springboot:
    build: .
    image: springboot:v1.0.0
    container_name: springboot
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis

这里给大家提醒一个地方就是,你在springboot设置mysql和redis的Host的时候,我们开发一般会填写localhost:3306,这里大家要将我们的localhost改成我们的service名字,所以会变成mysql:3306,redis配置host就是redis,我们设置了密码,所以记得在redis配置里面加上密

最后一步:用docker compose启动我们的容器(记得在文件当中启动)

确保已经拉取好了镜像文件,没有的话继续往下看;确保当前文件夹下面有Dockerfile、jar包、docker-compose.yml这三个文件

docker-compose up

完成之后,等待一段时间即可,启动之后你会发现当前文件夹下面有这几个文件

Dockerfile、jar包、Docker-compose.yml、mysql、redis

如果存在这几个文件即代表成功啦~


一、拉取镜像文件

这里大家可以先去一个网站找找看适合自己的镜像以及版本,这里我给大家示范一次

网站:hub.docker.com

上图自己找个适合自己的版本

开始拉取镜像

开始先查看一下自己本地有哪些镜像

docker images

 刚开始的话,我们会发现没有镜像,开始拉取

# 这里拉取的是mysql的5.7版本的,自己根据需求改变即可,一定要注意,这个版本一定是官网有的才可用
docker pull mysql:5.7
# 拉取redis的5.0版本,自己根据需求变更
docker pull redis:5.0

之后再根据docker images即可看到已经有两个镜像在本地了

这里再给大家分享几个docker的语法

#代表注释

# 删除一个镜像,这里示例删除的是一个mysql:5.7版本的,大家根据需求修改即可
docker rmi mysql:5.7

# 寻找一个镜像,这里示例寻找的是mysql镜像
docker search mysql

# 开启docker服务
systemctl start docker

# 关闭docker服务
systemctl stop docker

# 重启一个docker服务
systemctl restart docker

# 设置docker服务开机自启动
systemctl enable docker

# 查看当前的容器状态(未启动的也会显示出来)
docker ps -a

# 查看当前的容器状态(未启动的不会显示出来)
docker ps

# 关闭一个容器,xxx即使你查看docker容器最左侧显示的id值
docker stop xxx

# 开启一个容器
docker start xxx

# 重启一个容器
docker restart xxx

# 进入一个容器 同理,xxx也是id值
docker exec -it xxx /bin/bash

# 退出容器
exit

# 生成一个新的容器,在我们这个教程不会用到这个 这个不是后台运行,退出容器就会关闭容器,开启完容器默认会进入容器中
docker run -it mysql:5.7 /bin/bash

# 生成一个新的容器,这个是后台运行,不会默认进入容器中
docker run -id mysql:5.7 /bin/bash
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值