当前位置:   article > 正文

DockerFile部署SpringBoot项目_dockerfile springboot

dockerfile springboot

简述DockerFile

        Dockerfile 是一个文本文件,其中包含了用来构建 Docker 镜像的一系列指令。Docker 使用这些指令来自动化构建过程,将应用程序及其所有依赖项打包到一个可移植的容器中。Dockerfile 的每一行指令通常对应一个镜像层。

常用指令

  1. FROM:指定基础镜像。每个 Dockerfile 都必须以 FROM 指令开始。

     

    eg: FROM openjdk:17

  2. WORKDIR:设置工作目录。在这个目录下执行后续的指令。

     

    WORKDIR /app

  3. COPY:将文件或目录从主机复制到镜像中。

     

    COPY . /app

  4. RUN:在镜像内执行命令,通常用于安装软件包。

    RUN javac HelloWorld.java

  5. CMD:指定容器启动时要执行的命令。每个 Dockerfile 只能有一个 CMD 指令。

     

    CMD ["java", "HelloWorld"]

  6. ENTRYPOINT:类似于 CMD,但更适合于指定一个固定的执行命令。

     

    ENTRYPOINT ["java", "HelloWorld"]

  7. EXPOSE:声明容器监听的端口。

     

    EXPOSE 8080

  8. ENV:设置环境变量。

     

    ENV APP_ENV=production

  9. VOLUME:创建挂载点,将主机目录或其他容器目录挂载到这个点。

     

    VOLUME /data

打包SpringBoot项目

首先看我的配置文件的<build>部分

  1. <build>
  2. <finalName>${project.artifactId}</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. <executions>
  8. <execution>
  9. <goals>
  10. <goal>repackage</goal>
  11. </goals>
  12. </execution>
  13. </executions>
  14. </plugin>
  15. </plugins>
  16. </build>

简单解释一下

<finalName>${project.artifactId}</finalName>

这个标签指定了生成的构建文件(例如 JAR 或 WAR 文件)的最终名称。${project.artifactId} 是一个 Maven 变量,它会被替换为项目的 artifactId。例如,如果你的项目 artifactId 是 my-spring-boot-app,那么生成的 JAR 文件将被命名为 my-spring-boot-app.jar

<goal>repackage</goal>

这个标签指定了要执行的目标是 repackage。Spring Boot Maven 插件的 repackage 目标会重新打包你的应用程序,将其打包成一个可执行的 JAR 或 WAR 文件。这意味着它会把所有的依赖项都打包到一个 JAR 文件中,使得你可以通过运行 java -jar your-app.jar 来启动你的 Spring Boot 应用程序。

打包之后我们会得到一个jar文件

建立dockerFile文件

我们可以在桌面新建一个txt文本文档,然后将后缀去掉,另外这里不增加那些复杂的配置我们只写最基本必不可少的

jdk1.8dockerFile

  1. #使用jdk1.8
  2. # 使用官方的 OpenJDK 8 作为基础镜像
  3. FROM openjdk:8-jdk-alpine
  4. # 设置工作目录
  5. WORKDIR /app
  6. # 将应用程序的 JAR 文件复制到容器中
  7. COPY target/my-spring-boot-app.jar /app/app.jar
  8. # 运行应用程序
  9. ENTRYPOINT java -jar /tmp/app.jar
  10. # 暴露应用程序的端口
  11. EXPOSE 9001

jdk11dockerFile

  1. #使用jdk11
  2. # 使用官方的 OpenJDK 作为基础镜像
  3. FROM openjdk:11-jre-slim
  4. # 将 JAR 文件复制到容器中
  5. COPY target/my-spring-boot-app.jar /app.jar
  6. # 运行应用程序
  7. ENTRYPOINT java -jar /tmp/app.jar
  8. # 暴露应用程序的端口
  9. EXPOSE 9001

jdk17DockerFile

  1. #使用jdk17
  2. FROM openjdk:17
  3. COPY target/my-spring-boot-app.jar /app.jar
  4. # 暴露端口
  5. EXPOSE 9001
  6. # 入口,java项目的启动命令
  7. ENTRYPOINT java -jar /tmp/app.jar

这里我们需要更改的地方

COPY部分,将COPY后面的目标目录更改成为我们刚才打包的jar包

映射端口 我选择的是9001

比如我这里就是

  1. #使用jdk17
  2. FROM openjdk:17
  3. COPY target/supervisory.jar /app.jar
  4. # 暴露端口
  5. EXPOSE 9001
  6. # 入口,java项目的启动命令
  7. ENTRYPOINT java -jar /tmp/app.jar

在linux上创建目录

切换到指定目录

cd /usr/local

创建文件夹

 mkdir sup

进入文件夹

 cd sup

上传我们的jar包文件和DockerFile到指定位置

执行命令构建命令

docker build -t supervisory:1.0 .

启动容器

docker run -d -p 9001:9001 --name supervisory supervisory:1.0

这里我们就启动完成,可以正常访问我们的服务

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1007934
推荐阅读
相关标签
  

闽ICP备14008679号