Docker应用

一、需要知道什么(先去了解一下)

Docker 概述
Docker 安装(配置阿里云镜像加速器,要不 pull 镜像下载的慢)
portainer 可视化界面
关于镜像、容器、仓库的命令等
数据卷
Docker 网络
DockerFile
DockerCompose

回顾

主要讲的是Docker概念+使用Docker部署一个简单的springboot项目
总之 :只是部署了 一个 容器 运行 项目,而且这个项目所需的环境也比较少

1. 本次项目介绍

这次我将部署一个 前后端分离的项目
后端:基于 springboot ,而且需要 jdk8 mysql8 redis3 环境
前端:基于 vue ,这里我考虑利用 nginx 镜像来部署这个 vue
和上次部署项目的 区别 和难点:

1.1.多了mysql、redis、nginx环境
1.2.这里考虑将mysql、redis,分别创建一个容器(可以假设看成它们运行在不同的服务器上,实际开发中公司的mysql等也是单独运行在一个服务器上),前端服务、后端服务也各创建一个容器

前言:

二、 前言:

Docker****网络

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

容器数据卷

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

相关推荐
cui_win7 分钟前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
风清再凯12 分钟前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
深圳安锐科技有限公司15 分钟前
深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效
运维·安全·自动化·自动化监测·人工监测·桥梁监测·索力监测
猫头虎19 分钟前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
cocologin2 小时前
RIP 技术深度解析
运维·网络·网络协议
庸子3 小时前
基于Jenkins和Kubernetes构建DevOps自动化运维管理平台
运维·kubernetes·jenkins
Lpy25693 小时前
Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
运维·docker·容器
眠修3 小时前
Kuberrnetes 服务发布
linux·运维·服务器
hunjinYang3 小时前
Tomcat镜像实战:掌握Dockerfile的编写以及发布项目
docker·tomcat
好奇的菜鸟4 小时前
Docker 配置项详解与示例
运维·docker·容器