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

分分钟教会你使用docker

Posted by LY on December 19, 2018

前言

  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. 感谢🙏🙏🙏!!!