SpringBoot整合Dockerfile:一步步部署你的应用程序

本文介绍了Dockerfile的基本概念和常用指令,如FROM指定基础镜像、MAINTAINER维护者信息、ADD添加文件、ENTRYPOINT和EXPOSE等。同时指导如何在IDEA中配置并使用Dockerfile部署SpringBoot项目。

Dockerfile

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
在这里插入图片描述

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

常用指令

  • FROM 设置基础镜像。

    Dockerfile 是用来定制镜像的,所以一定是以一个镜像为基础,在其上定制。而 FROM 就是指定基础镜像,因此一个 DockerfileFROM 是必备的指令,并且必须是第一条指令。

    # 格式 
    FROM 镜像名称
    FROM 镜像名称:<tag>
    FROM 镜像名称@<digest>
    # tag或digest是可选的,如果不设置,默认使用latest版本的基础镜像
    
  • MAINTAINER 指定维护者信息。

    指定维护者的信息,用于为Dockerfile署名。

    # 格式
    MAINTAINER 名字
    
  • ADD 复制文件

    将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。

    # 格式 将本机target/1.0-SNAPSHOT.jar文件拷贝到容器/app.jar内
    ADD target/1.0-SNAPSHOT.jar /app.jar
    
  • ENTRYPOINT 入口点

    ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数。注:一般在制作一些执行就关闭的容器中会使用。

    # 格式
    ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)
    ENTRYPOINT command param1 param2 (shell内部命令)
    # 示例
    ENTRYPOINT ["java","-jar","/app.jar"]
    
  • EXPOSE 声明暴露的端口

    EXPOSE 指令是声明容器运行时提供服务的端口,这只是一个声明,在容器运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

    # 格式
    EXPOSE <port1> [<port2>...]
    

扩展:

  1. 更多指令请参考菜鸟教程
  2. 通过Dockerfile创建镜像命令 docker build -t 镜像名称:版本(tag) -f 文件名称 .

使用 IDEA 连接 Docker

在 Java 开发中,通常使用 IDEA 作为集成开发环境,所以为了方便进行开发和调试工作,接下来了解一下如何通过 IDEA 来管理和操作 Docker 容器。

为了使 IDEA 能够连接到服务器中的 Docker,我们首先需要在 Linux 系统中进行 Docker 远程访问配置。

Linux 中 Docker 远程访问配置

  1. 修改 docker.service 配置

    # /lib/systemd/system/docker.service 在第 13 行后面加上下面的内容
    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    

    在这里插入图片描述

    vim中使用 :set number 显示行号

  2. 重启 Docker

    配置修改后需重启 Docker 使配置生效。

    systemctl daemon-reload
    systemctl restart docker.service
    
  3. 防火墙开放 2375 端口

    # 开放端口
    firewall-cmd --add-port=2375/tcp --permanent 
    # 重新加载
    firewall-cmd --reload
    # 查看开放端口列表
    firewall-cmd --list-ports 
    
  4. 查看 2375 端口是否处于监听状态

    netstat -nplt|grep 2375
    

    成功如图所示:

    在这里插入图片描述

  5. 测试服务是否启动

    curl http://linux的ip地址:2375/info
    

    输出一大段内容即表示成功启动,如图所示:

    在这里插入图片描述

服务启动成功后,我们就可以在 IDEA 中配置 Docker 连接了。

IDEA 中 Docker 连接配置

  1. 在 IDEA 中安装 Docker 插件(新版本已默认安装),然后打开 Setting->Docker 添加一个 Docker配置,如下图:

    在这里插入图片描述

  2. 选择 TCP socket,按照下图配置,提示 Connection succeddful 即代表连接成功。

    在这里插入图片描述

现在我们已经可以通过 IDEA 连接 Docker 了。
在这里插入图片描述

接下来我们了解一下如何在 IDEA 中将 SpringBoot 项目通过 Dockerfile 文件部署到 Docker 中。

SpringBoot 整合 Dockerfile

  1. 使用 Maven 将 SpringBoot 项目打包
    在这里插入图片描述

    在这里插入图片描述

  2. 在项目中创建 Dockerfile 文件,如下:

    注意:Dockerfile 文件名必须是 Dockerfile

    FROM anapsix/alpine-java
    MAINTAINER xxx
    EXPOSE 9090
    ADD ./book-bk/target/book-bk-1.0-SNAPSHOT.jar /book.jar
    ENTRYPOINT ["java","-jar"]
    CMD ["/book.jar"]
    
  3. 编辑运行配置

    在这里插入图片描述

    如上图,点击 Dockerfile 文件左上角的箭头,选择 Edit 'Dockerfile'...

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    最后再配置一下镜像名称和容器名称,如下图:

    在这里插入图片描述

    Bind ports 相当于命令 docker run -p 0.0.0.0:8080:8080

  4. 验证
    配置完成后,点击 Run,然后我们在 Linux 上通过 docker ps 查看运行状态,如下图:
    在这里插入图片描述
    运行正常后,就可以在浏览器上访问了。
    在这里插入图片描述


在这里插入图片描述
感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值