容器已经来了?那你为什么还在手动搭建服务器环境

本文详细讲解了如何在Docker中部署WAR和JAR包,包括创建Dockerfile,使用tomcat镜像作为基础,以及如何通过Docker命令构建和运行镜像。同时,文章预告了后续关于GitHub自动构建镜像和镜像的上传下载等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  1. 大家好,很抱歉今天才更新,昨天工作有点忙。忙到很晚才得空,今天就把欠大家的先补上。
  2. 今天我们来说说,上一篇文章我们遗留下来的一些问题。
    1. 如何将我们自己的项目部署到镜像当中?
    2. 如何构建自己的镜像?
    3. 如何使用github实现自动构建镜像?
    4. 如何上传下载自己的镜像?
  3. 接下来我们一条一条的说,大家安心往下看。
  4. 没有看上一篇文章的同学,可以先上跳还在手动搭建各种环境?docker容器教你一步到位
docker中如何部署自己的项目?
  1. 上一篇文章中我们介绍了如何拉取tomcat以及java相关镜像、启动容器。而且我们也成功的访问到了tomcat的首页。那我们该如何将自己的war或者是jar包部署到我们的docker容器中以达到项目部署的目的呢?

  2. 那我们首先来说一下如何在docker镜像中部署war包。

    1. 首先我们需要docker的环境。

    2. 其次我们需要一个可部署的war包。

    3. 我们创建一个文件夹,将war包copy进去。

    4. 然后通过vim编辑器创建一个Dockerfile

      # 首先进入我们的目录
      $ cd 我们创建的文件夹
      # 创建Dockerfile文件
      $ vim Dockerfile
      
    5. Dockerfile

      # 在Dockerfile中放入如下命令
      # 指定基础镜像
      from hub.c.163.com/library/tomcat
      # 这段可有可无
      MAINTAINER Leiyuan 15326047083@163.com
      # 使用copy或者add命令将 test.war 也就是我们的war包添加到容器中的对应tomcat的webapps目录中
      COPY test.war /usr/local/tomcat/webapps
      
    6. 如上文件中将war包添加到了webapps中,那当我们启动容器是,会自动解压war包。

  3. 其次我们来说一下如何在docker镜像中部署我们的jar包。

    1. 比如说我们的springboot项目。一般来说我们都是默认生成了可执行jar包。我们在普通的java环境中是执行如下命令以启动jar包。

      # 这里我们假设我们当前目录有test.jar文件
      $ nohup java -Dserver.port=部署端口 -jar test.jar
      # nohup意为后台运行,他的日志文件会自动生成到当前目录下的nohup.out,当然也可以手动指定
      # -Dserver.port=部署端口。这是为了指定我们的映射端口。也就是说不管我们jar包中的端口为多少。都以部署端口为准
      
    2. 从上面可以看出来我们的jar包运行时需要手动去执行启动命令的,那我们如何将其部署到docker镜像中呢?继续往下看。

    3. 同样的我们创建一个文件夹,将jar包copy进去。

    4. 然后通过vim编辑器创建一个Dockerfile

    5. Dockerfile

      # 指定基础镜像
      from hub.c.163.com/library/tomcat
      # 这行为镜像信息,可有可无
      MAINTAINER Leiyuan 15326047083@163.com
      # copy 当前目录下的test.jar到镜像根目录下test.jar
      ADD test.jar test.jar
      # 暴露端口,我这里记不清我项目里面暴露的端口是多少,所以我把可能的端口全部暴露出来
      EXPOSE 8080
      EXPOSE 8081
      EXPOSE 80
      # 这段是最终要的
      # 这里是在容器启动成功后,在容器内执行如下命令。也就是 java -jar test.jar
      ENTRYPOINT ["java","-jar","test.jar"]
      
    6. 看到这里有人可能要问了。这样的话并非后台执行,关闭终端jar是不是就停止运行了呢?那这里解释一下,一般来说,我们启动容器时同样会是后台运行,所以容器内的命令就不用可以的去执行后台启动。

  4. docker镜像所需要的文件我们都准备好了,紧接着我们来说说如何构建docker镜像。

Dockerfile、jar、war都准备好了,如何构建镜像?
  1. 首先我们还是要进入刚才创建好的文件夹。

  2. 然后执行如下命令

    # -t 代表指明镜像名称和标签,千万注意后面还有一个 .   这个点代表当前目录
    $ docker build -t 镜像名称:镜像标签 .
    

    WeChat62ca651be5ded5e7ce4971ca4606bb3d

  3. 运行结果如上,那我们查询一下

    $ docker images
    

    WeChat3eca097af1613e5c6d6b8e137152777c

  4. 查询没有问题,那我们的镜像就算是构建成功。

  5. 那剩下的就是照常起订就可以,这里就不再赘述。

结束语

  1. 本来以为今天可以说完的,但是脑子里又浮现了一些新的用途想法,所以今天先就到这里。
  2. 来说说剩余的知识点以及刚才在脑子里浮现出来的想法。
    1. 如何使用github实现自动构建镜像?
    2. 如何上传下载自己的镜像?
    3. 既然可以通过github实现镜像的自动构建,那我们是不是可以通过shell脚本在服务器做定时任务实现自动拉取镜像并且自动部署呢?
  3. 那上述三点,我们放到明天的文章里面进行讲述。
  4. 非常感谢大家的关注和支持,一定会有更多的好的知识点分享给大家。
  5. 感谢???!!!
首先推荐您查看《CentOS7.6环境手动搭建k8s集群指南》,这本指南为您提供了在CentOS7.6环境搭建Kubernetes集群的详细步骤,非常适合进行个人测试和学习Docker持续集成方案。 参考资源链接:[CentOS7.6环境手动搭建k8s集群指南](https://wenku.youkuaiyun.com/doc/64eypdzvpw?spm=1055.2569.3001.10343) 搭建前,确保您的服务器已经配置好YUM源和EPEL源,以便安装所需的软件包。进行时间同步保证集群内各节点时间一致性,以及配置好名称解析。为了节点间的无密码SSH登录,需要将master节点的公钥添加到node1和node2的授权密钥文件中。 在所有服务器上关闭swap内存交换功能,因为Kubernetes不推荐在有swap的系统上运行。可以通过编辑 `/etc/fstab` 文件来实现。 创建并配置阿里云的Kubernetes YUM仓库,这样可以快速下载安装Kubernetes相关软件包。安装 `kubelet`、`kubeadm`、`kubectl` 和 `git` 等工具,并启用这些服务以便它们在系统启动时自动运行。 使用 `kubeadm` 工具初始化master节点,创建集群,并通过 `kubeadm join` 命令让node节点加入集群。同时配置网络插件,如Flannel或Calico,以及设置Pod网络 CIDR,确保集群内的网络互通。 Kubernetes在Docker持续集成方案中扮演着容器编排平台的角色,可以自动化应用的部署、扩展和管理。配合Docker,您能实现应用的快速迭代和无缝更新,通常也会用到GitLab CI/CD等持续集成和持续部署工具。 通过以上步骤,您可以确保Kubernetes集群在CentOS7.6环境下的稳定运行。对于更深入的了解和学习,这份指南提供了全面且实用的资源,让您在解决当前问题后继续深入探索Kubernetes与Docker的集成使用。 参考资源链接:[CentOS7.6环境手动搭建k8s集群指南](https://wenku.youkuaiyun.com/doc/64eypdzvpw?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值