Springboot整合Dockerfile

Springboot整合Dockerfile

前言

在springboot应用中使用Dockerfile的目的是将应用程序部署到Docker容器中,使其在Docker容器中运行。这样做的好处主要有以下几点:

  • 独立性和一致性:使用Dockerfile将应用程序和其依赖项打包到一个独立的Docker容器中,确保了应用程序在不同环境中的一致性。这消除了"在我的开发机器上可以运行,但在其他地方不行"的问题。

  • 环境隔离:Docker让您的应用程序成为"自带环境的旅行者",不受周围环境的影响。就像在一个安全的泡泡中运行一样,不必担心与其他软件包的冲突。

  • 自动化部署: Docker容器可以轻松地集成到CI/CD(持续集成/持续交付)流程中,从而实现自动化部署。一旦配置好Dockerfile,您可以使用CI/CD工具将新版本的应用程序部署到容器中,然后将其推送到Docker仓库。

  • 版本管理: Docker容器可以很容易地版本化,这使得在不同的应用程序版本之间进行切换或回滚变得更加简单。

  • 扩展性: Docker容器可以根据负载的需求进行水平扩展,从而更容易处理高流量和高负载情况。

Dockerfile是什么

结构

​ Dockerfile是一种镜像描述文件,包含基础镜像,维护者,镜像操作指令以及容器启动指令等信息,用于定义怎么去构建和配置Docker容器。之前我们将应用jar包部署到docker容器中都是人工一步一步进行较为繁琐,应用Dockerfile脚本文件简化了我们的部署流程,将需要人工操作的地方写到文件里,然后一次性启动,进而实现自动化部署。

基础命令

序号指令解释示例
1FROM 镜像名称/镜像名称:/镜像名称@tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像。FROM用于指定基础镜像FROM java:8
2MAINTAINER 名字指定维护者信息MAINTAINER fxj
3ADD src… dest,ADD [“src”,… “dest”] 用于支持包含空格的路径将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。ADD target/springboot-dockerfile-1.0-SNAPSHOT.jar /app.jar 将本机 target/springboot-dockerfile-1.0-SNAPSHOT.jar文件拷贝到容器内/app.jar
4ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)ENTRYPOINT 允许您配置将作为可执行文件运行的容器。用ENTRYPOINT的exec形式来设置相当稳定的默认命令和参数,然后使用CMD的任何一种形式来设置更可能更改的其他默认值。ENTRYPOINT [“java”,“-jar”,“/app.jar”]
5EXPOSE […]指定暴露的端口EXPOSE 9090
6VOLUME 文件路径使用指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其它容器。VOLUME /tmp
7CMDCMD 的主要目的是为正在执行的容器提供默认设置。这些默认设置可以包括可执行文件,或者它们可以省略可执行文件,此时您必须同时指定 ENTRYPOINT 指令。CMD [“python”, “/app/my_script.py”]

运行 Dockerfile指令

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

!! 注意结尾有个.

docker build 命令用于根据 Dockerfile 构建 Docker 镜像。命令的 -t 选项用于指定构建的镜像名称和版本(tag)。 -f 选项用于指定要使用的 Dockerfile 文件。

Linux中配置远程访问docker

我们需要确保部署到容器内的应用程序能够与外部世界进行通信,这样才有意义。因此,我们需要进行网络配置,如在容器内部开放端口并进行端口映射,以允许外部访问。

打开文件并修改

vim /lib/systemd/system/docker.service

在这里插入图片描述

 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

这是一条Docker守护进程(Docker Daemon)的启动配置命令,用于指定Docker守护进程监听的地址和方式。具体来说,这个命令包含两个参数 -H,每个参数后面跟着一个监听地址。

-H tcp://0.0.0.0:2375

  • -H 参数表示要指定一个用于Docker守护进程的监听地址。
  • tcp://0.0.0.0:2375 表示Docker守护进程将通过TCP协议监听在所有可用的网络接口(0.0.0.0)上的2375端口。这是Docker的远程API端口,允许通过网络连接来管理Docker容器和镜像。在生产环境中,要非常谨慎地开放这个端口,因为它可以允许远程管理Docker,如果没有适当的安全配置,可能会导致安全风险。

-H unix:///var/run/docker.sock

  • -H 参数同样表示要指定一个用于Docker守护进程的监听地址。
  • unix:///var/run/docker.sock 表示Docker守护进程将通过Unix域套接字(Unix Socket)在本地 /var/run/docker.sock 文件上监听。这是Docker的本地API端口,允许在主机上运行的进程通过Unix Socket与Docker守护进程通信,进行容器和镜像的管理。通常,这种方式比通过网络监听更安全,因为它仅允许本地进程与Docker守护进程通信。

重启docker

[root@localhost df]# systemctl daemon-reload
[root@localhost df]# systemctl restart docker.service

测试2375端口是否有效

 netstat -nplt|grep 2375

在这里插入图片描述

crul测试服务是否启动

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

在这里插入图片描述

开放2375端口(针对电脑安全级别过高情况)

[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 
3306/tcp 2375/tcp

idea安装配置docker插件

现在市面上的绝大多数公司都是采用idea进行应用开发,我们自然希望能够将idea与Docker容器联系起来,这样在idea中能实现可视化的docker操作和管理,大大提升了效率,以下是安装步骤。

安装插件(没有去plugin市场下载)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们在idea上完成项目开发后,希望将它部署到docker中运行,因此我们需要先将项目打包成.jar,再将jar包部署到docker容器中运行,以下用于Maven构建Spring Boot项目的打包插件的pom.xml配置片段,该插件用于帮助构建和打包Spring Boot应用程序。

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

linux安装JDK

JDK是Java应用程序的开发和运行环境,linux环境中想要运行.jar项目,自然也需要安装jdk。

新建目录并上传jdk

在这里插入图片描述在这里插入图片描述

解压
tar -zxvf   jdk-8u341-linux-x64.tar.gz
配置
JAVA_HOME, PATH, CLASS_PATH
编辑/etc/profile文件

注意jdk安装位置

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
source /etc/profile
source /etc/profile
测试jdk

在这里插入图片描述

java -version
上传jar

在这里插入图片描述

开启指定端口(针对电脑安全级别高的)
[root@localhost jdk1.8.0_341]# firewall-cmd --add-port=9090/tcp --permanent 
success
[root@localhost jdk1.8.0_341]# firewall-cmd --reload
运行
 java -jar hello-docker-1.0-SNAPSHOT.jar

springboot整合Dockerfile

在项目下创建Dockerfile

在这里插入图片描述

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

创建容器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试

在浏览器输入对应的 linux端口ip:项目配置的端口/xxx,能正常访问,则项目成功部署到docker容器中。

补充

window与linux环境变量配置区别

序列符号WindowsLinux
1分隔符;:
2文件夹分割\/
的 linux端口ip:项目配置的端口/xxx,能正常访问,则项目成功部署到docker容器中。

补充

window与linux环境变量配置区别

序列符号WindowsLinux
1分隔符;:
2文件夹分割\/
3取值符号%变量%$变量
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要运行Spring Boot项目的Dockerfile,可以按照以下步骤操作: 1. 首先,确保已经重启了Docker服务,可以使用以下命令重启Docker服务: ``` systemctl restart docker ``` 2. 在Spring Boot项目的根目录下创建一个名为`Dockerfile`的文件,该文件用于定义Docker镜像的构建和运行配置。 3. 打开`Dockerfile`文件,将以下内容复制到文件中: ``` FROM openjdk:8-jdk-alpine COPY target/myproject.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 这个Dockerfile使用了基于Alpine Linux的OpenJDK 8镜像,并将构建好的Java项目的jar文件复制到Docker镜像中,然后通过`ENTRYPOINT`指令运行该jar文件。 4. 打开终端,进入到Spring Boot项目的根目录,执行以下命令来构建Docker镜像: ``` docker build -t myproject . ``` 其中,`myproject`是你给Docker镜像起的名字,可以根据需要自行修改。 5. 构建完成后,使用以下命令来运行Docker镜像: ``` docker run -p 8080:8080 myproject ``` 其中,`8080:8080`表示将Docker容器的8080端口映射到宿主机的8080端口,可以根据需要修改端口号。 这样,你就成功地使用Dockerfile来运行Spring Boot项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker从零开始-springboot整合Dockerfile](https://blog.csdn.net/qq_36115196/article/details/128391462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用Dockerfile部署springboot项目 (入门级教程 简单易懂)](https://blog.csdn.net/qq_41890624/article/details/126873259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值