Docker应用

打印 上一主题 下一主题

主题 888|帖子 888|积分 2664

需要知道什么     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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表