Davide Boldrin
Davide Boldrin

Reputation: 310

Dockerfile from python:3.6-slim add jdk8

someone could help me, i'm starting from follow docker file

FROM python:3.6-slim
RUN apt-get update
RUN apt-get install -y apt-utils build-essential gcc

And i would add an openjdk 8

thanks

Upvotes: 2

Views: 9106

Answers (3)

Radhwane Chebaane
Radhwane Chebaane

Reputation: 864

Up to today (17/02/2021) openjdk-8-jdk is still in debian 9 (Strech) but removed from debian 10 (Buster), so you should find openjdk-8-jdk if you use this python docker image: python:3.6-stretch instead of python:3.6-slim-buster

Upvotes: 1

lquitadamo
lquitadamo

Reputation: 653

You can download java tar.gz, unpack it and set environment variable. Below a sample of implementation in Dockerfile:

FROM python:3.6-slim

RUN apt-get update
RUN apt-get install -y apt-utils build-essential gcc

ENV JAVA_FOLDER java-se-8u41-ri

ENV JVM_ROOT /usr/lib/jvm

ENV JAVA_PKG_NAME openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
ENV JAVA_TAR_GZ_URL https://download.java.net/openjdk/jdk8u41/ri/$JAVA_PKG_NAME

RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*    && \
    apt-get clean                                                               && \
    apt-get autoremove                                                          && \
    echo Downloading $JAVA_TAR_GZ_URL                                           && \
    wget -q $JAVA_TAR_GZ_URL                                                    && \
    tar -xvf $JAVA_PKG_NAME                                                     && \
    rm $JAVA_PKG_NAME                                                           && \
    mkdir -p /usr/lib/jvm                                                       && \
    mv ./$JAVA_FOLDER $JVM_ROOT                                                 && \
    update-alternatives --install /usr/bin/java java $JVM_ROOT/$JAVA_FOLDER/bin/java 1        && \
    update-alternatives --install /usr/bin/javac javac $JVM_ROOT/$JAVA_FOLDER/bin/javac 1     && \
    java -version

Upvotes: 6

masseyb
masseyb

Reputation: 4130

In cases where you need python and java installed in a same image (i.e. pyspark) I find it easier to extend the openjdk images with python than the other way around for example:

FROM openjdk:8-jdk-slim-buster

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        python3.7 \
        python3-pip \
        python3.7-dev \
        python3-setuptools \
        python3-wheel

Build the image: docker build --rm -t so:64051125 .

Python + Java versions

Note: the version of python3 available through apt on debian:buster-slim is 3.7, if you really need 3.6 could try building it from source.

Upvotes: 4

Related Questions