Dockerfile'da yazarken java'yı container'a nasıl kurabilirim?

Sep 19 2020

Yazılım geliştirmede safım. Cron job kullanarak Dkron Scheduler'dan bir jar dosyası çalıştırmak istiyorum . Docker'da dkron çalıştırıyorum (docker-compose up kullanarak). Java'yı Dkron'dan çalıştırıp çalıştıramayacağımı görmek için "command": "java --version" 'ı geçiyorum. Docker'da java kurulu olmadığından dockerfile.hub dosyasını şu şekilde değiştirdim:

FROM alpine
LABEL maintainer="Victor Castell <[email protected]>"

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'ı tekrar yaptığımda, herhangi bir hata vermiyor, hala "command": "java --version" u json üzerinden UI üzerinden geçerken, dkron hata gösteriyor - exec: "java": yürütülebilir dosya $ PATH içinde bulunamadı .

Bunu çözmek için ne yapabilirim?

Şimdiden teşekkürler.

Yanıtlar

1 ShivamSahu Sep 20 2020 at 17:21

Temel görüntü olarak dkron kullanarak docker konteynerinde JVM oluşturabildim (herkese açık) ve üzerine başka bir imaj oluşturabildim.

İşte java uygulamasını çalıştırmak için oluşturduğum 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

Sonra imaj oluşturuyorum. İd xxx olsun Sonra imajı çalıştırdım ve dkron sunucusunu docker run -p 8080: 8080 xxx agent --server --bootstrap-wait = 1 --node-name = node1 olarak kurdum

code_mechanic Sep 19 2020 at 05:52

Bu dosyayı dene

FROM alpine
LABEL maintainer="Victor Castell <[email protected]>"

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"]

alp paketinde paket yoktur openjava8.

Düzen: ENV değişkenlerini güncelleyin