Ceci est mon tout premier essai pour créer une image de docker et j'espère que quelqu'un pourra m'aider. Mon Dockerfile ressemble à peu près à ceci:
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"]
Fondamentalement, j'installe uniquement Java afin de pouvoir développer un fichier jar. Lorsque j'exécute mon makefile, j'obtiens l'erreur suivante:
/ bin/sh: 1:/usr/lib/jvm/Java-7-openjdk-AMD64: autorisation refusée
J'ai essayé de suivre cet exemple: https://registry.hub.docker.com/u/barnybug/openjdk-7-jre/dockerfile/
Conseils très appréciés
Edit: par requête dans le commentaire voici mon makefile:
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)
avec qui je cours
make docker_image Sudo=sudo
J'ai pu installer OpenJDK-8
via les étapes ci-dessous (tirées de ici ). Mon Dockerfile
hérite de phusion/baseimage-docker , qui est basé sur Ubuntu 16.04 LTS
.
# 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
À installer OpenJDK-7
à la place, vous devrez peut-être ajouter
add-apt-repository ppa:openjdk-r/ppa
de telle sorte que la première étape devient
# 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;
J'espère que ça aide.
Il existe déjà un dépôt officiel pour Java , qui utilise Open JDK.
Son très facile à utiliser. Jetez un oeil sur ce repo , qui montre très basique bonjour programme mondial .
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"]
Fichier HelloWorld.Java:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!!");
}
}