1、安装docker

我的服务器是基于CenOS7.4版本,猿友们也可以搞个类似版本的虚拟机,docker的安装方式是采用yum 安装方式:

yum install docker

so easy! 然后就是把docker 启动起来了:

systemctl start docker

此时你执行一下 docker -v 就会显示:

dockers部署kafka docker 部署流程_nginx


执行一下 docker -help 这样就说明你的docker已经安装好并且启动了。

2、配置一下阿里镜像加速

有关阿里镜像加速配置,咋们首先得去找到自己的阿里镜像加速地址,每个淘宝账号都有一个自己独立的。下面教一教大家获取自己的阿里镜像加速地址:

  1. 进入阿里云官网,并且登录,点击控制台
  2. 进入控制台后,点击左上角的产品与服务,再选择容器镜像服务
  3. 进入容器镜像服务后,点击镜像加速器

按照上面的说明步骤去做就可以了。

3、咋们就要通过docker 拉去我们需要的基础镜像了

比如拉取我们需要部署Springboot项目的 JDK1.8镜像:

docker pull openjdk:8u262-jdk

拉取我么需要部署静态资源的nginx 镜像:

docker pull nginx:stable-alpine

拉取mysql 镜像:

docker pull mysql:5.7

拉取reids镜像:

docker pull redis:latest

全部拉取完毕后,咋们执行一下docker image ls

dockers部署kafka docker 部署流程_mysql_02


我们看到,所有的基本镜像已经拉去下来了。为了后期我们docker容器之间镜像通信,比如,部署Springboot的容器需要连接 部署mysql的容器和部署redis的容器,那么这些容器之间,必须能够通信,我们可以创建自定义网桥:

dockers部署kafka docker 部署流程_redis_03

docker network create -d bridge laojbridge

创建后,查询创建的桥接信息 docker network ls

dockers部署kafka docker 部署流程_redis_04


详细信息: docker network inspect fd8b1066cc13

dockers部署kafka docker 部署流程_mysql_05

4、基于基础镜像通过部署Springboot项目

创建 目录 mkdir -p /home/laoj/docker/teacher/ 在此目录下 创建编写Dockerfile:

FROM openjdk:8u262-jdk
MAINTAINER pangfei<695149142@qq.com>
RUN mkdir -p /home/laoj/file
WORKDIR /home/laoj/teacher
VOLUME /home/laoj/teacher
VOLUME /home/laoj/file
EXPOSE 8081
USER root
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom" ,"-jar","laoj-teacher.jar"]

构建镜像:

docker build -t teacher:v1.0 --network laojbridge -f Dockerfile .

执行 docker image ls 后,可以看到新建的镜像

dockers部署kafka docker 部署流程_mysql_06

运行镜像 teacher:V1.0

docker run  -it -d  -p 8081:8081   -v /home/laoj/teacher:/home/laoj/teacher -v /home/laoj/file:/home/laoj/file --network laojbridge --network-alias teacher  --name teacher  --restart=always teacher:v1.0

其中:

  • /home/laoj/teacher 是 本地jar包目录。
  • /home/laoj/file是Springboot项目上传文件存放地方,都挂载到了本地本地服务目录中。
  • –network-alias teacher 是使用了网络别名, 只要其他容器使用了 laojbridge的网桥,就可以,通过teacher的别名访问,比如,启动一个mysql的容器,其别名设置的是mysql,那我的teacher:V1.0容器中数据库连接信息就可以写成这样(Springboot的配置方式):

    运行镜像后,通过docker ps -a 命令发现生成了新的容器,并且容器暴露了8081端口,映射本地8081端口:

5、部署nginx

创建 目录 mkdir -p /home/laoj/docker/nginx/ 在此目录下 创建:
镜像文件Dockerfile:

FROM docker.io/nginx:stable-alpine
MAINTAINER pangfei<695149142@qq.com>
RUN mkdir -p /home/laoj/file  && mkdir -p /home/laoj/dist
WORKDIR /home/laoj/nginx

EXPOSE 8084
USER root
ENTRYPOINT ["nginx","-c" ,"/home/laoj/nginx/conf/nginx.conf","-g","daemon off;"]

构建镜像:

docker build -t nginx:v1.0 --network laojbridge -f Dockerfile .

运行镜像:

docker run  -it -d  -p 8084:8084  -v /home/laoj/nginx:/home/laoj/nginx  -v /home/laoj/file:/home/laoj/file  -v /home/laoj/dist:/home/laoj/dist --network laojbridge --network-alias nginx --name nginx  --restart=always nginx:v1.0

6、部署mysql

创建文件夹:mkdir -p /home/laoj/mysql/data

mkdir -p /home/laoj/mysql/conf

运行镜像:

docker run -d -p 3306:3306   -v /home/laoj/mysql/data:/var/lib/mysql -v /home/laoj/mysql/conf:/etc/mysql/conf.d --network laojbridge --network-alias mysql --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=ky2019 -e MYSQL_DATABASE=laoj  mysql:5.7

执行数据库初始化工作:

docker exec -i mysql sh -c 'exec mysql -uroot -p123456 --default-character-set=utf8' < /home/laoj/mysql/backup/ laoj_2020-07-28.sql

有关mysql的docker 部署方式,详情可以见dockerhub ,有详细的介绍

7、部署redis

创建文件夹:

mkdir -p /home/laoj/redis/conf	
mkdir -p /home/laoj/redis/data

将配置文件拷贝至conf 目录

启动镜像:

docker run -it -d -p 6379:6379 -v /home/laoj/redis/data:/data --network laojbridge --network-alias redis --name redis --restart=always redis redis-server --requirepass 1q2w3e4r --bind 0.0.0.0 --dir /data

8、配置数据库定时备份

安装crontab :

yum install vixie-cron
 yum install crontabs

查看crontabs的状态:service crond status

service crond start // 启动服务
service crond stop // 关闭服务
service crond restart // 重启服务
service crond reload // 重新载入配置

编写 定时任务脚本backup.sh:

#!/bin/bash
backupdir=/home/laoj/mysql/backup/

time=_` date +%Y-%m-%d`

db_name=laoj

docker exec mysql sh -c 'exec mysqldump  -uroot -p123456 --databases laoj' | gzip> $backupdir/$db_name$time.sql.gz

find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \;

创建备份任务:crontab -e

编写定时 命令:

0 0 * * *  /home/laoj/mysql/backup/backup.sh

数据库恢复:

docker exec -i some-mysql sh -c 'exec mysql -uroot -p123456' < /home/laoj/mysql/backup/laoj.sql.gz

以上都是经过实践验证的。