web-dev-qa-db-ja.com

DockerイメージにJavaをインストール

これは、Dockerイメージを作成する最初の試みであり、誰かが私を助けてくれることを望んでいます。私のDockerfileはおおよそ次のようになります。

FROM mybaseimage:0.1
MAINTAINER ...

ENV Java_HOME /usr/lib/jvm/Java-7-openjdk-AMD64
RUN sed 's/main$/main universe/' -i /etc/apt/sources.list

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update

RUN apt-get install -y openjdk-7-jre && apt-get clean &&\
             mkdir temp_dir  &&   cd temp_dir && \
             ${Java_HOME}/bin/jar -xvf somejar.jar  &&\
             cd ..
ENTRYPOINT ["somescript.sh"]

基本的に私はJavaのみをインストールしているので、jarファイルを展開できます。メイクファイルを実行すると、次のエラーが表示されます。

/ bin/sh:1:/ usr/lib/jvm/Java-7-openjdk-AMD64:許可が拒否されました

私はこの例を追跡しようとしています: https://registry.hub.docker.com/u/barnybug/openjdk-7-jre/dockerfile/

アドバイスは大歓迎

編集:ここのコメントのリクエストごとに私のメイクファイルです:

DOCKER_REGISTRY=registry.mycompany.com
DOCKER_IMAGE=appimage-myapp
DOCKER_TAG=3.0

Sudo=

ARCHIVE_NAME=$(DOCKER_IMAGE):$(DOCKER_TAG)
  REPO_ARCHIVE_NAME=$(DOCKER_REGISTRY)/$(ARCHIVE_NAME)
  BASE_IMAGE_ARCHIVE=$(DOCKER_IMAGE)_$(DOCKER_TAG).tar.gz

all: $(BASE_IMAGE_ARCHIVE)

.PHONY: docker_image

docker_image: Dockerfile
    $(Sudo) docker build -t $(ARCHIVE_NAME) .

$(BASE_IMAGE_ARCHIVE): docker_image
  $(Sudo) docker tag -f $(ARCHIVE_NAME) $(REPO_ARCHIVE_NAME)
  $(Sudo) docker Push $(REPO_ARCHIVE_NAME)
  $(Sudo) docker save $(ARCHIVE_NAME) | gzip -c > $@
  $(Sudo) docker rmi $(REPO_ARCHIVE_NAME)

私が一緒に走る

make docker_image Sudo=sudo
10
Yana K.

次の手順でOpenJDK-8をインストールできました( here から取得)。私のDockerfileUbuntu 16.04 LTSに基づく phusion/baseimage-docker を継承しています。

# Install OpenJDK-8
RUN apt-get update && \
    apt-get install -y openjdk-8-jdk && \
    apt-get install -y ant && \
    apt-get clean;

# Fix certificate issues
RUN apt-get update && \
    apt-get install ca-certificates-Java && \
    apt-get clean && \
    update-ca-certificates -f;

# Setup Java_HOME -- useful for docker commandline
ENV Java_HOME /usr/lib/jvm/Java-8-openjdk-AMD64/
RUN export Java_HOME

代わりにOpenJDK-7をインストールするには、先頭に追加する必要がある場合があります

add-apt-repository ppa:openjdk-r/ppa

そのような最初のステップは

# Install OpenJDK-7
RUN add-apt-repository ppa:openjdk-r/ppa && \
    apt-get update && \
    apt-get install -y openjdk-7-jdk && \
    apt-get install -y ant && \
    apt-get clean;

これがお役に立てば幸いです。

25
laylaylom

Java の公式リポジトリが既にあり、Open JDKを使用しています。
非常に使いやすいです。これをご覧ください repo 、これは非常に基本的な hello world program を示しています。
Dockerfile:

FROM Java:7
COPY src /home/root/Java/src
WORKDIR /home/root/Java
RUN mkdir bin
RUN javac -d bin src/HelloWorld.Java
ENTRYPOINT ["Java", "-cp", "bin", "HelloWorld"]

HelloWorld.Javaファイル:

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello World!!!");
    }
}
2
Sabin