Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像

 

目录

 

一、前置知识

1.镜像结构

2.Dockerfile是什么

二、自定义一个 java 项目镜像

1.创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目录中

2.编写 Dockerfile 文件

3.使用 docker build 构建为一个镜像

4.使用 docker run 运行镜像


一、前置知识


1.镜像结构

我们知道镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成,那么它的层次结构是怎么的呢?

镜像是分层结构,每一层称为一个Layer

  1. BaseImage层:包含基本的系统函数库、环境变量、文件系统
  2. Entrypoint:入口,是镜像中应用启动的命令
  3. 其它层:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置

2.Dockerfile是什么

Dockerfile就是一个文本文件,其中包含一个个的

### 编写适用于 Java Spring Boot 应用程序的 Dockerfile 对于构建基于 Java 的 Spring Boot 应用程序镜像,通常会采用多阶段构建来减少最终镜像大小并提高安全性。下面是一个典型的用于打包和运行 Spring Boot 应用程序的 `Dockerfile` 示例: ```dockerfile # 使用官方 OpenJDK 镜像作为基础镜像进行编译 FROM maven:3.8.5-openjdk-17 AS build WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline COPY src ./src RUN mvn package -DskipTests # 构建完成后的第二阶段:创建精简的应用服务器环境 FROM openjdk:17-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY --from=build /app/target/my-spring-boot-app.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 此文件定义了一个两步过程,在第一步中使用 Maven 来编译应用程序并将结果打包成可执行 jar 文件;在第二步中,则切换到更轻量级的基础镜像仅保留必要的组件以启动应用。 值得注意的是,如果计划部署至生产环境中,建议调整 `-Dspring.profiles.active` 参数指定激活配置文件[^1]。另外,当考虑容器化服务之间的通信时,请确认所使用的嵌入式 HTTP 服务器(如Tomcat 或 Jetty),因为这可能影响端口映射设置以及网络策略的设计[^2]。 最后,为了简化某些外部属性管理,可以利用 YAML 格式的配置文件,并通过命令行参数或者环境变量传递给应用程序实例[^3]。 #### 注意事项 确保已经准备好要复制进容器内的所有资源文件路径正确无误,并且任何敏感数据都不应硬编码在此类脚本之中。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值