zoukankan      html  css  js  c++  java
  • Dockerfile你值得拥有

    Dockerfile 介绍

    什么是Dockerfile

    Dockerfile是一个用来将你的应用构建为docker镜像的文本文件,文本中的内容是一条一条的指令,这些指令的集合在docker引擎中执行,最终构建出你的应用的docker镜像。

    准备

    需要小伙伴们先在本地或者服务器上安装docker

    docker安装看这篇就够了

    命令介绍

    先来看一个简单的Dockerfile文件

    FROM hub.c.163.com/library/java:8
    VOLUME /tmp
    ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar
    RUN bash -c 'touch /docker.jar'
    ENTRYPOINT ["java","-jar","/docker.jar"]
    

    FROM :需要构建镜像的项目所需要依赖的基础镜像SpringBoot项目是跑在JDK之上的

    VOLUME :定义匿名数据卷,容器在运行的时候,会将数据写入到这个数据卷中,这里设置为一个临时目录

    ADD :将target目录下的springboot-docker-0.0.1-SNAPSHOT.jar包添加到docker容器中,并将名称进行修改为docker.jar

    RUN :执行后其后面的命令

    ENTRYPOINT;在容器启动之前的预定义执行脚本命令

    创建项目

    下面我们,创建一个简单的SpringBoot项目来验证一下我们上文所说的。

    加入依赖

    打开的你的idea创建一个SpringBoot项目,我们只需要在pom.xml中加上如下依赖即可

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    编写测试接口

    在项目目录项创建一个controller包,创建一个DockerFileController类,编写如下接口

    /**
     * @author:triumphxx
     * @Date:2020/8/1
     * @Time:4:53 下午
     * @微信公众号:北漂码农有话说
     * @网站:http://blog.triumphxx.com.cn
     * @GitHub https://github.com/triumphxx
     **/
    @RestController
    public class DockerFileController {
        @RequestMapping("/docker")
        public String dockerFileRun(){
            System.out.println("dockerfile测试");
            return "DockerFile";
        }
    }
    

    打包项目

    在你的项目下使用maven将项目打成一个jar包,这时项目的target目录下就会有一个springboot-docker-0.0.1-SNAPSHOT.jar包。

    编写Dockerfile文件

    在你的项目根目录创建Dockerfile文件,下面的文件内容也就是我们文章开头的那个文件。

    FROM hub.c.163.com/library/java:8
    VOLUME /tmp
    ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar
    RUN bash -c 'touch /docker.jar'
    ENTRYPOINT ["java","-jar","/docker.jar"]
    

    构建镜像

    以上工作完成后,需要将项目打包为docker镜像。

    执行命令

    docker build -f /路径/Dockerfile  .
    #  我的具体路径
    # docker build -f /Users/wangyupeng/IdeaProjects/springboot-docker/Dockerfile .
    

    细心的小伙伴可能发现这一行的命令后面有一个.,那么这个点是什么呢?它是上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。所有我们在构建镜像的时候上下文路径不要放其他无用的文件。

    执行完构建命令后,控制台输出如下日志表示构建成功,并且docker会给镜像分配一个ID

    查看镜像

    这时执行如下命令查看是否有我们的镜像产生

    docker images
    

    小伙伴们可以看到,镜像已经构建完成了,但是镜像的REPOSITORYTAG是空的,那么我们需要在执行一条命令来指定这个俩个属性

    配置镜像

    执行如下命令指定镜像的REPOSITORYTAG

    docker  build -t springboot-docker/springboot-docker:1.0 .
    

    再次执行docker images,可以看到这时的镜像已经完整的呈现在你的面前

    运行镜像

    执行命令

    镜像已经构建完成了,我们需要将它运行起来,验证正确性,执行如下命令,命令中的具体参数,作者就不一一介绍了 这篇文章有介绍

    docker run -d -p8080:8080 springboot-docker/springboot-docker:1.0
    # 或者
    docker run -d -p8080:8080 8bf227f4fed9
    

    查看运行日志

    首先执行如下命令,查看执行的docker容器

    docker ps 
    

    这是我们就能够看到docker容器的ID,执行如下命令,查看执行日志

    docker logs 
    

    访问接口

    在浏览器输入http://localhost:8080/docker,如果浏览器页面返回的内容是DockerFile,表示项目的镜像运行正常

    小结

    好啦,小伙伴们,我们介绍了,什么是Dockerfile以及如何将自己的项目构建为docker镜像,希望对你有所帮助。案例已分享到本人的GitHub GitHub

  • 相关阅读:
    Apache的Thrift引发的编译思考
    QQ的小秘密
    快速简化Android截屏工作
    Solution of wireless link "PCI unknown" on Centos 7.1
    Java Date Compare
    eclipse集成tomcat日志文件输出配置
    身份证号码验证正则表达式
    curl用法一例 传递代理用户名密码
    HTML 5 placeHolder
    JavaScript(ECMAScript) with 语句
  • 原文地址:https://www.cnblogs.com/triumph-wyp-com/p/13416459.html
Copyright © 2011-2022 走看看