在Dockerfile中编写Java时如何在容器中安装Java? [英] How to install java in container while writing it in Dockerfile?

查看:281
本文介绍了在Dockerfile中编写Java时如何在容器中安装Java?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在软件开发方面很幼稚。我想使用cron作业从 Dkron Scheduler运行jar文件。我在docker中运行dkron(使用docker-compose up)。我正在传递命令: java --version看看我是否可以从Dkron运行Java。由于docker没有安装Java,我将dockerfile.hub文件更改为:

  FROM alpine 
LABELmaintainer = Victor Castell < victor@victorcastell.com>"

运行设置-x \
&& buildDeps ='bash ca证书openssl tzdata'\
&& apk添加--update $ buildDeps \
&& apk add openjava8#添加此行以安装java
&& rm -rf / var / cache / apk / * \
&& mkdir -p / opt / local / dkron

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk#添加以下行以安装Java
ENV PATH $ PATH:$ JAVA_HOME / bin#添加此行以安装Java

EXPOSE 8080 8946

ENV SHELL / bin / bash
WORKDIR / opt / local / dkron

复制dkron。
COPY dkron- * ./
ENTRYPOINT [ / opt / local / dkron / dkron]

CMD [ --help]

当我再次做docker-compose up时,它没有给出任何错误,仍然传递 command: java --version通过json通过UI,dkron显示错误-exec: java :在$ PATH中找不到可执行文件。


我该怎么办?


谢谢。

解决方案

我能够使用dkron作为基础映像(可公开获得)在docker容器中创建JVM,并在其之上构建另一个映像。


这是我为运行Java应用程序而创建的dockerfile

  FROM dkron / dkron 
WORKDIR / root / hello -world
复制hello.java / root / hello-world

RUN apk add openjdk8

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $ JAVA_HOME / bin:$ PATH

RUN javac hello.java

然后我建立图像。设id为xxx
然后运行映像并以
docker run -p 8080:8080 xxx agent --server --bootstrap-expect = 1 --node-name = node1

I am naive in software development. I want to run a jar file from Dkron Scheduler using cron job. I am running dkron in docker(using docker-compose up). I am passing "command": "java --version" to see if I can run java from Dkron. As docker do not have java installed I changed the dockerfile.hub file to this:

FROM alpine
LABEL maintainer="Victor Castell <victor@victorcastell.com>"

RUN set -x \
    && buildDeps='bash ca-certificates openssl tzdata' \ 
    && apk add --update $buildDeps \
    && apk add openjava8                                #add this line to install java
    && rm -rf /var/cache/apk/* \
    && mkdir -p /opt/local/dkron

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk             #add this line to install java
ENV PATH $PATH:$JAVA_HOME/bin                           #add this line to install java

EXPOSE 8080 8946

ENV SHELL /bin/bash
WORKDIR /opt/local/dkron

COPY dkron .
COPY dkron-* ./
ENTRYPOINT ["/opt/local/dkron/dkron"]

CMD ["--help"]

When I again do docker-compose up it do not give any error, still on passing "command": "java --version" by json through UI, dkron shows error - exec : "java" : executable file not found in $PATH.

What can I do to resolve it?

Thanks in advance.

解决方案

I was able to create JVM in docker container using dkron as the base image, (publically available) and build another image on top of it.

Here is dockerfile I created for running java application

FROM dkron/dkron
WORKDIR /root/hello-world
COPY hello.java /root/hello-world

RUN apk add openjdk8

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $JAVA_HOME/bin:$PATH

RUN javac hello.java

Then I build image. Let id be xxx Then I ran the image and build dkron server as docker run -p 8080:8080 xxx agent --server --bootstrap-expect=1 --node-name=node1

这篇关于在Dockerfile中编写Java时如何在容器中安装Java?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆