[英]How to install java in container while writing it in Dockerfile?
我对软件开发很幼稚。 我想使用 cron 作业从Dkron Scheduler 运行 jar 文件。 我在 docker 中运行 dkron(使用 docker-compose up)。 我正在传递 "command": "java --version" 以查看是否可以从 Dkron 运行 java。 由于 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"]
当我再次执行 docker-compose up 时,它不会给出任何错误,仍然通过 UI 通过 json 传递“command”:“java --version”,dkron 显示错误 - exec :“java”:在 $PATH 中找不到可执行文件.
我能做些什么来解决它?
提前致谢。
我能够使用 dkron 作为基本映像(公开可用)在 docker 容器中创建 JVM,并在其上构建另一个映像。
这是我为运行 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
然后我建立形象。 让 id 为 xxx 然后我运行镜像并构建 dkron 服务器作为 docker run -p 8080:8080 xxx agent --server --bootstrap-expect=1 --node-name=node1
试试这个文件
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 包没有openjava8
包。
编辑:更新 ENV 变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.