基于 OpenJDK 21 + Python 多语言 Docker 镜像

13次阅读
没有评论

如果你想构建一个同时包含 OpenJDK 21PythonDocker 镜像,根据你更侧重哪种环境,这里有两种最常用的编写 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 代码需要通过 jniusjaydebeapi 等库与 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)
post-qrcode
 0
评论(没有评论)
验证码