在Docker容器中从JRE更改为JDK

时间:2020-08-12 16:17:35

标签: java docker tomcat java-8 alpine

我正在使用tomcat,jre 8(openjdk),alpine linux作为基础映像。 我的Dockerfile如下:

FROM tomcat:8.5.39-jre8-alpine

RUN rm -rf /usr/local/tomcat/webapps/*

COPY target/openjdk8-8.252.09-r0.apk /usr/local/tomcat/.

RUN apk add --allow-untrusted /usr/local/tomcat/openjdk8-8.252.09-r0.apk

ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk

ENV PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/bin

RUN export JAVA_HOME

RUN export PATH

我想用jdk8代替jre8。
为此,我下载了相同版本的JDK8并将其安装在alpine linux上。

COPY target/openjdk8-8.252.09-r0.apk /usr/local/tomcat/.
RUN apk add --allow-untrusted /usr/local/tomcat/openjdk8-8.252.09-r0.apk 

为确保选择所需的java(JDK8),我设置了JAVA_HOME和PATH。

ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/bin

但是当我运行Tomcat时(当我运行容器时), /usr/lib/jvm/java-1.8-openjdk/jre已登录控制台,这意味着原始JRE仍在使用中。

我已阅读this one. 但是我不清楚他的意思。

是否有任何解决方法或任何使它起作用的方法? 还是我在哪里弄错了?

欢呼

1 个答案:

答案 0 :(得分:0)

我在带有以下Docker的Docker映像中使用带有Alpine的OpenJDK8:

FROM alpine:3.11.3
ENV LANG=C.UTF-8 \
      JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk \
      PATH=$PATH:/usr/lib/jvm/java-1.8-openjdk/bin/

RUN  set -x apk add --no-cache openjdk8
相关问题