赞
踩
Dockerfile 是一个文本文件,其中包含了用来构建 Docker 镜像的一系列指令。Docker 使用这些指令来自动化构建过程,将应用程序及其所有依赖项打包到一个可移植的容器中。Dockerfile 的每一行指令通常对应一个镜像层。
常用指令
FROM:指定基础镜像。每个 Dockerfile 都必须以 FROM
指令开始。
eg: FROM openjdk:17
WORKDIR:设置工作目录。在这个目录下执行后续的指令。
WORKDIR /app
COPY:将文件或目录从主机复制到镜像中。
COPY . /app
RUN:在镜像内执行命令,通常用于安装软件包。
RUN javac HelloWorld.java
CMD:指定容器启动时要执行的命令。每个 Dockerfile 只能有一个 CMD
指令。
CMD ["java", "HelloWorld"]
ENTRYPOINT:类似于 CMD
,但更适合于指定一个固定的执行命令。
ENTRYPOINT ["
java", "
HelloWorld"]
EXPOSE:声明容器监听的端口。
EXPOSE 8080
ENV:设置环境变量。
ENV APP_ENV=production
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文件
我们可以在桌面新建一个txt文本文档,然后将后缀去掉,另外这里不增加那些复杂的配置我们只写最基本必不可少的
- #使用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
- #使用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
- #使用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
切换到指定目录
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
这里我们就启动完成,可以正常访问我们的服务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。