Dockerfile'da yazarken java'yı container'a nasıl kurabilirim?
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
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
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