1、安装docker
我的服务器是基于CenOS7.4版本,猿友们也可以搞个类似版本的虚拟机,docker的安装方式是采用yum 安装方式:
yum install docker
so easy! 然后就是把docker 启动起来了:
systemctl start docker
此时你执行一下 docker -v
就会显示:
执行一下 docker -help
这样就说明你的docker已经安装好并且启动了。
2、配置一下阿里镜像加速
有关阿里镜像加速配置,咋们首先得去找到自己的阿里镜像加速地址,每个淘宝账号都有一个自己独立的。下面教一教大家获取自己的阿里镜像加速地址:
- 进入阿里云官网,并且登录,点击控制台
- 进入控制台后,点击左上角的产品与服务,再选择容器镜像服务
- 进入容器镜像服务后,点击镜像加速器
按照上面的说明步骤去做就可以了。
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
:
我们看到,所有的基本镜像已经拉去下来了。为了后期我们docker容器之间镜像通信,比如,部署Springboot的容器需要连接 部署mysql的容器和部署redis的容器,那么这些容器之间,必须能够通信,我们可以创建自定义网桥:
docker network create -d bridge laojbridge
创建后,查询创建的桥接信息 docker network ls
:
详细信息: docker network inspect fd8b1066cc13
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
后,可以看到新建的镜像
运行镜像 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
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
以上都是经过实践验证的。