springboot整合Dockerfile

这篇具有很好参考价值的文章主要介绍了springboot整合Dockerfile。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是Dockerfile

​ Dockerfile 是用于定义和构建 Docker 镜像的文本文件。它包含一系列的指令和配置,用于指导 Docker 引擎在构建过程中自动化地执行一系列操作,从而创建一个可运行的容器镜像。
springboot dockerfile,spring boot,后端,java,linux,docker,容器

2.为什么要使用Dockerfile

使用 Dockerfile 的主要原因是为了实现容器化应用程序的可移植性和可重复性。下面列举了一些使用 Dockerfile 的好处:

  1. 自动化构建:通过编写 Dockerfile,可以将应用程序的构建过程自动化,避免手动安装和配置依赖环境的繁琐操作。只需要简单地执行构建命令,Docker 引擎就能够根据 Dockerfile 中的指令自动完成构建过程。
  2. 可移植性:Dockerfile 提供了对容器环境的描述,使得可以在不同的环境中重现相同的应用程序运行环境。无论是在开发人员的本地机器上、测试环境中还是生产环境中,都可以使用相同的 Dockerfile 进行构建,确保应用程序的一致性。
  3. 版本控制:Dockerfile 是纯文本文件,可以与应用程序代码一起进行版本控制。这样可以轻松地跟踪和管理 Docker 镜像的变化,方便团队协作和持续集成。
  4. 隔离性:使用 Dockerfile 构建的镜像是独立的、隔离的运行环境。每个容器都具有自己的文件系统、进程空间和网络接口,可以避免应用程序之间的相互影响,提供更好的安全性和稳定性。

3.创建Dockerfile文件

创建一个名为hello的文件:

[root@localhost df]# touch hello
[root@localhost df]# vim hello

编辑该文件,基本规则如下:(原文链接:https://blog.csdn.net/m0_46090675/article/details/121846718)

  • FROM:设置基础镜像,tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像。

    FROM <image>
    FROM <image>:<tag>
    FROM <image>@<digest>
    
  • MAINTAINER:设置镜像维护者信息。

    MAINTAINER <name>
    
  • RUN:在镜像中执行命令。

    shell执行 格式:    RUN <command> 
    exec执行 格式:    RUN ["executable", "param1", "param2"]
    
  • ENV:设置环境变量。

    ENV <key> <value>  #<key>之后的所有内容均会被视为其<value>的组成部分,因此,一次只能设置一个变量
    ENV <key>=<value> ...  #可以设置多个变量,每个变量为一个"<key>=<value>"的键值对,如果<key>中包含空格,可以使用\来进行转义,也可以通过""来进行标示;另外,反斜线也可以用于续行
    
  • ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

    ADD <src>... <dest>
    ADD ["<src>",... "<dest>"] 用于支持包含空格的路径
    
  • CMD:构建镜像后调用,也就是在容器启动时才进行调用。

    CMD ["executable","param1","param2"] (执行可执行文件,优先)
    CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)
    CMD command param1 param2 (执行shell内部命令)
    
  • ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

    ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先)
    ENTRYPOINT command param1 param2 (shell内部命令)
    
  • LABEL:用于为镜像添加元数据

    LABEL <key>=<value> <key>=<value> <key>=<value> ...
    
  • EXPOSE:声明容器内部的应用程序要使用的网络端口。

    EXPOSE <port> [<port>...]
    
  • VOLUME:用于指定持久化目录(指定此目录可以被挂载出去)

    VOLUME ["/path/to/dir"]
    
  • WORKDIR:设置工作目录。

    WORKDIR /path/to/workdir
    
  • USER:设置运行镜像时的用户名。

    USER user  
    USER user:group  
    USER uid  
    USER uid:gid  
    USER user:gid  
    USER uid:group
    
  • ARG:用于指定传递给构建运行时的变量(给dockerfile传参),相当于构建镜像时可以在外部为里面传参

    ARG <name>[=<default value>]
    
  • ONBUILD:用于设置镜像触发器

    ONBUILD [INSTRUCTION]
    

下面是一个示例:

FROM anapsix/alpine-java
MAINTAINER lyx
EXPOSE 9090
ADD target/hello-docker-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

4.构建镜像

docker build -t 镜像名称:版本(tag) -f 文件名称 .

[root@localhost df]# docker build -t redis:latest -f hello .

5.linux中配置远程访问docker

[root@localhost df]# vim /lib/systemd/system/docker.service

修改部分如下:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

重启docker

[root@localhost df]# systemctl daemon-reload
[root@localhost df]# systemctl restart docker.service
[root@localhost df]# netstat -nplt|grep 2375
tcp6       0      0 :::2375                 :::*                    LISTEN      25908/dockerd       
[root@localhost df]# curl http://192.168.118.129:2375/info
[root@localhost df]# firewall-cmd --add-port=2375/tcp --permanent
success
[root@localhost df]# firewall-cmd --reload
success
[root@localhost df]# firewall-cmd --list-ports
2375/tcp
  1. systemctl daemon-reload:重新加载 systemd 的配置,以便识别最新的配置更改。
  2. systemctl restart docker.service:重启 Docker 服务,以使配置更改生效。
  3. netstat -nplt|grep 2375:通过 netstat 命令检查是否有进程在监听 2375 端口。结果显示 Docker 守护进程(dockerd)正在监听该端口。
  4. curl http://192.168.118.129:2375/info:使用 curl 命令尝试访问 192.168.118.129 的 2375 端口,获取 Docker 服务的信息。
  5. firewall-cmd --add-port=2375/tcp --permanent:向防火墙添加一个永久的规则,允许 2375 端口的 TCP 连接。
  6. firewall-cmd --reload:重新加载防火墙的配置,使新的规则生效。
  7. firewall-cmd --list-ports:列出当前防火墙规则中开放的端口,其中包括刚刚添加的 2375/tcp 端口。

6.idea安装配置docker插件

安装Docker插件
springboot dockerfile,spring boot,后端,java,linux,docker,容器

7.springboot整合Dockerfile

配置 pom

POM: Project Object Model(项目管理模型)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wnhz.springboot</groupId>
    <artifactId>hello-docker</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!-- dependencemanagement :maven的继承特性-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.13</version>
    </parent>

    <!-- 依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- springboot打包插件--->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

springboot dockerfile,spring boot,后端,java,linux,docker,容器

linux安装JDK

/usr/local/software/jdk

上传jdk压缩包

springboot dockerfile,spring boot,后端,java,linux,docker,容器

解压

tar -zxvf   jdk-8u341-linux-x64.tar.gz

配置

JAVA_HOME, PATH, CLASS_PATH

编辑/etc/profile文件

vim /etc/profile

JAVA_HOME=/usr/local/software/jdk/jdk1.8.0_341
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

加载/etc/profile文件,使修改后的环境变量和配置生效

source /etc/profile

测试jdk

java -version

springboot dockerfile,spring boot,后端,java,linux,docker,容器

上传jar,开启指定端口

springboot dockerfile,spring boot,后端,java,linux,docker,容器

[root@localhost jdk1.8.0_341]# firewall-cmd --add-port=9090/tcp --permanent 
success
[root@localhost jdk1.8.0_341]# firewall-cmd --reload 

运行jar

 java -jar hello-docker-1.0-SNAPSHOT.jar

window与linux环境变量配置区别

序列 符号 Windows Linux
1 分隔符 ; :
2 文件夹分割 \ /
3 取值符号 %变量% $变量

在项目下创建Dockerfile

FROM anapsix/alpine-java   
MAINTAINER ohb
EXPOSE 9090
ADD target/hello-docker-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

创建容器

springboot dockerfile,spring boot,后端,java,linux,docker,容器

springboot dockerfile,spring boot,后端,java,linux,docker,容器

springboot dockerfile,spring boot,后端,java,linux,docker,容器

springboot dockerfile,spring boot,后端,java,linux,docker,容器
最后,试着访问以下网址:
http://linux里的IP地址/api接口路径文章来源地址https://www.toymoban.com/news/detail-767110.html

到了这里,关于springboot整合Dockerfile的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月11日
    浏览(50)
  • springboot整合Dockerfile

    ​ Dockerfile 是用于定义和构建 Docker 镜像的文本文件。它包含一系列的指令和配置,用于指导 Docker 引擎在构建过程中自动化地执行一系列操作,从而创建一个可运行的容器镜像。 使用 Dockerfile 的主要原因是为了实现容器化应用程序的可移植性和可重复性。下面列举了一些使

    2024年02月04日
    浏览(21)
  • Dockerfile中编译、打包、部署spring boot项目

            Dockerfile是自动构建docker镜像的配置文件,将镜像构建过程通过指令的方式定义在Dockerfile中。配合docker build命令行可以实现自动化的Docker镜像的构建。         我们在学习一门语言或文档语法的时候,最快的学习方式就是看别人是怎么写的。这里这个“「别人

    2024年02月09日
    浏览(35)
  • [Dokcer] Dokcer常用命令解析,通过dockerfile运行spring boot项目

    docker search 这里以mysql为例↓ 选好要用1中哪个name的镜像后,就可以拉取了 docker pull 镜像名 docker image ls docker run 镜像名 这会创建一个错误的容器,会在你的进程中(docker ps -a查看),因为有些配置没配置,现在把这个错误的删掉 正确的创建运行mysql镜像(以mysql为例)的方法

    2024年02月02日
    浏览(29)
  • spring boot es | spring boot 整合elasticsearch | spring boot整合多数据源es

    目录 Spring Boot与ES版本对应 Maven依赖 配置类 使用方式 @Test中注入方式 @Component中注入方式 查询文档 实体类 通过ElasticsearchRestTemplate查询 通过JPA查询 保存文档 参考链接 项目组件版本: Spring Boot:2.2.13.RELEASE Elasticsearch:6.8.0 JDK:1.8.0_66 Tips: 主要看第3列和第5列,根据ES版本选择

    2023年04月18日
    浏览(42)
  • 【Spring Boot】Spring Boot整合多数据源

    在实际的开发工作中,我们经常会遇到需要整合多个数据源的情况,比如同时连接多个数据库、读写分离、跨数据库查询等。本文将介绍如何使用Spring Boot来实现多数据源的整合,对于刚刚接触开发的小伙伴可能有一些帮助。 在一个应用程序中使用多个数据源意味着我们需要

    2024年02月10日
    浏览(33)
  • Spring Boot配置docker-maven-plugin实现构建与推送镜像(Dockerfile)

    0、前提:docker、 maven、java均已安装,docker 镜像私服均已设置网络也开通 本文基于Docker进行构建,也可以指定构建信息到 POM 中构建,大家自行搜索 1、首先是一些网络和docker相关配置的打开 2、针对maven 的 setting.xml 文件的修改 3、项目的pom文件,引入docker maven plugin 及相关配

    2024年02月07日
    浏览(33)
  • 六、Spring/Spring Boot整合ActiveMQ

    2.1 applicationContext.xml 路径:src/main/resources/applicationContext.xml 2.2 生产者 2.3 消费者 3.1 applicationContext.xml 路径:src/main/resources/applicationContext.xml 3.2 生产者 和队列的代码一样,只是在配置文件里面改了destination 3.3 消费者 和队列的代码一样,只是在配置文件里面改了destination 实现

    2024年02月22日
    浏览(34)
  • Spring Boot进阶(96):轻松上手:实战Spring Boot整合Docker

      Docker 是一个开源的应用程序容器化工具,它可以将应用程序和依赖组件打包到一个容器中,实现应用程序的快速部署和运行。Spring Boot 是一个快速开发应用程序的框架,使用 Spring Boot 可以快速构建各种各样的应用程序。本文将介绍如何使用 Spring Boot 整合 Docker,实现应用

    2024年02月07日
    浏览(40)
  • Spring Boot整合Junit

    2024年01月17日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包