如果你想构建一个同时包含 OpenJDK 21 和 Python 的 Docker 镜像,根据你更侧重哪种环境,这里有两种最常用的编写 Dockerfile 的方法。
方法一:以 Python 为基础镜像 + 安装 OpenJDK 21(推荐)
从官方的 Python 镜像开始,然后通过包管理器安装 Java。如果你需要特定且稳定的 Python 版本,这种方法通常最干净。
Dockerfile
# 使用官方 Python 运行环境作为基础镜像
FROM python:3.11-slim
# 安装 OpenJDK 21 并清理包列表以精简镜像体积
RUN apt-get update && apt-get install -y \
openjdk-21-jre-headless \
&& rm -rf /var/lib/apt/lists/*
# 验证安装
RUN java -version
RUN python --version
# 在下方设置工作目录和应用运行命令...
注意:openjdk-21-jre-headless 非常适合只需要运行 Java 程序而不需要图形用户界面(GUI)的场景,这能大幅缩减镜像体积。
方法二:以 Ubuntu 为基础镜像 + 同时安装两者(自由度最高)
如果你想完全掌控这两个运行环境的版本,或者想避免底层 Debian-slim 系统可能带来的依赖问题,直接从 Ubuntu 镜像开始是一个很好的选择。
Dockerfile
FROM ubuntu:24.04
# 避免 apt 安装过程中出现交互式提示
ENV DEBIAN_FRONTEND=noninteractive
# 安装 Java 21 和 Python 3
RUN apt-get update && apt-get install -y \
openjdk-21-jre-headless \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# 验证安装
RUN java -version
RUN python3 --version
核心实用技巧
- 配置环境变量: 如果你的 Python 代码需要通过
jnius或jaydebeapi等库与 Java 进行交互,你可能需要明确设置JAVA_HOME。可以在 Dockerfile 中添加以下代码:DockerfileENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 - 控制镜像体积: 将两个运行环境组合在一起会导致镜像体积变大(通常在 400MB 到 700MB 以上)。请记得在
apt-get install命令后加上rm -rf /var/lib/apt/lists/*来清理缓存,减少不必要的体积占用。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)