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>部分

 <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </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

#使用jdk1.8
# 使用官方的 OpenJDK 8 作为基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 将应用程序的 JAR 文件复制到容器中
COPY target/my-spring-boot-app.jar /app/app.jar

# 运行应用程序
ENTRYPOINT java -jar /tmp/app.jar

# 暴露应用程序的端口
EXPOSE 9001

jdk11dockerFile

#使用jdk11
# 使用官方的 OpenJDK 作为基础镜像
FROM openjdk:11-jre-slim

# 将 JAR 文件复制到容器中
COPY target/my-spring-boot-app.jar /app.jar

# 运行应用程序
ENTRYPOINT java -jar /tmp/app.jar

# 暴露应用程序的端口
EXPOSE 9001

jdk17DockerFile

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

这里我们需要更改的地方

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

映射端口 我选择的是9001

比如我这里就是


#使用jdk17
FROM openjdk:17
COPY target/supervisory.jar /app.jar
# 暴露端口
EXPOSE 9001
# 入口,java项目的启动命令
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

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

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Dockerfile是一种用于构建Docker镜像的文件格式,可以通过Dockerfile部署Spring Boot应用程序。 以下是使用Dockerfile部署Spring Boot应用程序的步骤: 1. 创建一个Dockerfile文件,指定基础镜像和应用程序的相关配置信息。 2. 在Dockerfile中使用COPY命令将应用程序的jar包复制到镜像中。 3. 在Dockerfile中使用EXPOSE命令指定应用程序的端口号。 4. 在Dockerfile中使用CMD命令指定启动应用程序的命令。 5. 使用docker build命令构建镜像。 6. 使用docker run命令启动容器。 通过以上步骤,就可以使用Dockerfile部署Spring Boot应用程序了。 ### 回答2: Dockerfile是用于构建Docker镜像的一种文件格式。在部署Spring Boot应用程序时,可以使用Dockerfile来构建一个包含Spring Boot和其依赖的镜像,以便在Docker容器中运行应用程序。 首先,我们需要在项目根目录下创建一个名为Dockerfile的文件。在Dockerfile中,我们可以定义一系列步骤来构建我们的镜像。 首先,我们需要选择一个基础镜像,可以选择包含Java和JVM的适用于Spring Boot的基础镜像,比如openjdk。在Dockerfile中,我们可以使用FROM指令来选择基础镜像。 接下来,我们需要将我们的应用程序复制到镜像中。可以使用COPY指令将已经构建好的Spring Boot JAR文件复制到镜像的特定目录中。 然后,我们可以使用EXPOSE指令来指定容器中应用程序监听的端口号。这个端口号应该与Spring Boot应用程序中配置的端口号一致。 最后,我们可以使用CMD指令来指定容器启动时要执行的命令。在这种情况下,我们可以指定要运行的Java命令,以启动Spring Boot应用程序。 完成Dockerfile后,我们可以使用Docker命令来构建镜像。在项目根目录下运行以下命令:`docker build -t <镜像名称>:<版本号> .` 。这将根据我们的Dockerfile构建一个镜像,并将其标记为指定的名称和版本号。 构建完成后,我们可以使用docker run命令来运行我们的镜像,并将其部署为一个容器。可以使用`docker run -p <主机端口>:<容器端口> <镜像名称>:<版本号>` 来启动容器,并将主机端口与容器端口进行映射,以便我们可以通过主机端口访问Spring Boot应用程序。 使用上述步骤和命令,我们就可以使用Dockerfile部署Spring Boot应用程序。这样可以方便地在不同环境中部署和运行应用程序,并提供更好的可移植性和扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值