需要知道什么
Docker
概述
Docker
安装(配置阿里云镜像加速器,要不
pull
镜像下载的慢)
portainer
可视化界面
关于镜像、容器、仓库的命令等
数据卷
Docker
网络
DockerFile
DockerCompose
回顾
主要讲的是
Docker
概念
+
使用
Docker
部署一个
简单
的
springboot
项目
总之
:只是部署了
一个
容器
运行
项目,而且这个项目所需的环境也比较少

本次项目介绍
这次我将部署一个
前后端分离的项目
后端:基于
springboot
,而且需要
jdk8
、
mysql8
、
redis3
环境
前端:基于
vue
,这里我考虑利用
nginx
镜像来部署这个
vue
和上次部署项目的
区别
和难点:
1.
多了
mysql
、
redis
、
nginx
环境
2.
这里考虑将
mysql
、
redis
,
分别创建一个容器
(可以假设看成它们运行在不同的服务器上,实际开发
中公司的
mysql
等也是单独运行在一个服务器上),前端服务、后端服务
也各创建一个容器

前言:
Docker
网络
这次准备创建
mysql
、
redis
、前端、后端服务容器,后端需要连接
数据库和
redis
所以需要和
mysql
容
器、
redis
容器互通

由此引出docker网络
创建个自定义网络test_net01,后面用
列出网络查看是否创建成功
容器数据卷
docker
的理念回顾:将应用和环境打包成一个镜像
数据?如果数据都在容器中,则
容器删除,数据就会丢失
(删容器跑路!)
需求:实现数据可以持久化,解决:
Mysql
数据可以存储在本地
容器之间可以有一个数据共享的技术!
Docker
容器产生的数据同步到本地!
这就是卷技术!目录的挂载,将容器中的目录挂载到
linux
上面

环境准备和部署
环境:
mysql8
、
redis3
mysql01容器
要创建一个
mysql01
容器里面能提供
mysql
服务(
mysql
服务实例)(你认为现在我们在整一个服务器,
这个服务器上要有
mysql
服务)

1.执行命令(注:这里我没加入自定义网络,我后面又加上的,可以不用这个命令,直接用图上的命
令)

2.通过portainer可视化工具查看是否有mysql01这个容器,是否在运行
3.测试mysql01容器提供的mysql服务是否正常
4.将后端需要的数据库表通过执行sql语句弄到刚刚连接的mysql中
5.mysql01容器准备完成(提供的mysql服务)
redis01容器
(
redis
服务实例)(你认为现在我们在整一个服务器,这个服务器上要有
redis
服务)

1.执行命令(注:这里我没加入自定义网络,我后面又加上的,可以不用这个命令,直接用图上的命令)

2.通过portainer可视化工具查看是否有redis01这个容器,是否在运行
3.将所需的redis数据弄到这个redis01容器中
4.redis01容器准备完成(提供的redis服务)
应用部署
1.将项目打包传输到虚拟机(这里你可以假装是客户机)
2.创建名为jdk8的容器来运行后端程序
3.因为后端springboot需要连接数据库和redis
所以要
yaml
中配置
数据库的
ur
l
和
redis
的
host

因为我们上面创建了自定义网络
test_net01
,而且将这些容器加入到了自定义网络,则通过
ping
容器名
就能
ping
通

4.将图中命令改成下面运行
5.通过portainer查看是否有这个容器,是否运行
6.测试 :通过docker logs 容器名 查看日志 发现启动成功 (docker logs jdk8)
前端部署
1.将项目npm run build后的dist文件传输到虚拟机(这里你可以假装是客户机)
2.创建名为nginx01的容器来运行前端程序
3.执行命令
4.通过portainer查看是否有这个容器,是否运行
docker部署项目完成
输入客户机
ip
和相应端口查看相应页面和数据
是否正常显示
mysql
、
redis
等配置的环境都没有出错,因为这个项目还运用到其他环境,我没配置其他出错正常

优化应用部署
1.使用DockerFile
上面写了太多命令和参数
为了方便,自动构建镜像

举例:优化刚刚的后端应用部署
将下面的命令
docker run -d --network test_net01 -v /home/susan/dockerTest:/dockerTest -p9900:9900 --name jdk01 openjdk:8-jdk java -jar /dockerTest/springboot-0.0.1-SNAPSHOT.jar "--spring.datasource.url=jdbc:mysql://mysql01:3306/alipay?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true" "--spring.redis.host=redis01"
改写成DockerFile
FROM openjdk:8-jdk# 指定工作目录WORKDIR /app# 添加 jar 包到镜像ADD springboot-0.0.1-SNAPSHOT.jar .# 声明开发端口EXPOSE 9900# 指定容器运行CMD ["java","-jar","springboot-0.0.1-SNAPSHOT.jar","--spring.datasource.url=jdbc:mysql://mysql01:3306/alipay?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true","--spring.redis.host=redis01"]
2.使用DockerCompose
运行多个容器方便

之前运行总共启动了
mysql01
,
redis01
,
jdk01
,
nginx01
这几个容器
可以写成一个
docker-compose.yaml
