ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Docker应用
[打印本页]
作者:
缠丝猫
时间:
2024-12-12 12:08
标题:
Docker应用
需要知道什么
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 -p 9900: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&allowPublicKeyRetri eval=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&allowPublicKeyRetri eval=true","--spring.redis.host=redis01"]
2.
利用
DockerCompose
运行多个容器方便
之前运行总共启动了 mysql01 , redis01 , jdk01 , nginx01 这几个容器 可以写成一个
docker-compose.yaml
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4