[英]How to install java in container while writing it in Dockerfile?
I am naive in software development.我对软件开发很幼稚。 I want to run a jar file from Dkron Scheduler using cron job.我想使用 cron 作业从Dkron Scheduler 运行 jar 文件。 I am running dkron in docker(using docker-compose up).我在 docker 中运行 dkron(使用 docker-compose up)。 I am passing "command": "java --version" to see if I can run java from Dkron.我正在传递 "command": "java --version" 以查看是否可以从 Dkron 运行 java。 As docker do not have java installed I changed the dockerfile.hub file to this:由于 docker 没有安装 java,我将 dockerfile.hub 文件更改为:
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.当我再次执行 docker-compose up 时,它不会给出任何错误,仍然通过 UI 通过 json 传递“command”:“java --version”,dkron 显示错误 - exec :“java”:在 $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.我能够使用 dkron 作为基本映像(公开可用)在 docker 容器中创建 JVM,并在其上构建另一个映像。
Here is dockerfile I created for running java application这是我为运行 java 应用程序而创建的 dockerfile
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让 id 为 xxx 然后我运行镜像并构建 dkron 服务器作为 docker run -p 8080:8080 xxx agent --server --bootstrap-expect=1 --node-name=node1
Try this file试试这个文件
FROM alpine
LABEL maintainer="Victor Castell <victor@victorcastell.com>"
RUN set -x \
&& buildDeps='bash ca-certificates openssl tzdata' \
&& apk add --update $buildDeps \
&& apk add openjdk8 \
&& rm -rf /var/cache/apk/* \
&& mkdir -p /opt/local/dkron
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"
EXPOSE 8080 8946
ENV SHELL /bin/bash
WORKDIR /opt/local/dkron
COPY dkron .
COPY dkron-* ./
ENTRYPOINT ["/opt/local/dkron/dkron"]
CMD ["--help"]
alpine package doesn't have openjava8
packages. alpine 包没有openjava8
包。
Edit: Update ENV variables编辑:更新 ENV 变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.