According to Java's documentation:
https://docs.oracle.com/javacomponents/usage-tracker/overview/toc.htm#JSUTO-GUID-6642AAD5-85A1-462F-9D77-09A52DF72404
Java Usage Tracker should be disabled by default. But that is not the case for Java 8u161 or greater.
Setting com.oracle.usagetracker.track.last.usage=false in /etc/oracle/java/usagetracker.properties does the trick.
Dockerfile example:
FROM centos:7
ARG JAVA_VERSION=8u171
ARG JAVA_BUILD=b11
ARG JAVA_HASH=512cd62ec5174c3487ac17c61aaa89e8
ENV JAVA_HOME=/usr/java/default
RUN mkdir /usr/java \
&& curl --create-dirs -L --retry 2 --retry-delay 2 --connect-timeout 30 \
--cookie "oraclelicense=accept-securebackup-cookie;gpw_e24=http://edelivery.oracle.com" \
http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION}-${JAVA_BUILD}/${JAVA_HASH}/jdk-${JAVA_VERSION}-linux-x64.rpm \
-o /tmp/jdk-linux-x64.rpm \
&& rpm -ivh /tmp/jdk-linux-x64.rpm \
&& rm -f /tmp/jdk-linux-x64.rpm \
&& mkdir -p /etc/oracle/java/ \
&& echo "com.oracle.usagetracker.track.last.usage=false" > /etc/oracle/java/usagetracker.properties
Related
I'm trying to install oracle jdk 8 along with tomcat native with APR support on an Alpine linux docker image. I'm continually faced with the following error:
No such file or directory
#include <jni.h>
when trying to make install. I have tried using the '-I/$JAVA_HOME/ option added to the ./configure command to no avail.
This here below is my Dockerfile:
FROM alpine:latest
WORKDIR /tmp
# BASH
RUN apk add --no-cache --update-cache bash curl ca-certificates
ENV GLIBC_PKG_VERSION=2.23-r3
RUN curl -Lo /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub
RUN curl -Lo glibc-${GLIBC_PKG_VERSION}.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_PKG_VERSION}/glibc-${GLIBC_PKG_VERSION}.apk
RUN curl -Lo glibc-bin-${GLIBC_PKG_VERSION}.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_PKG_VERSION}/glibc-bin-${GLIBC_PKG_VERSION}.apk
RUN curl -Lo glibc-i18n-${GLIBC_PKG_VERSION}.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_PKG_VERSION}/glibc-i18n-${GLIBC_PKG_VERSION}.apk
RUN apk add glibc-${GLIBC_PKG_VERSION}.apk glibc-bin-${GLIBC_PKG_VERSION}.apk glibc-i18n-${GLIBC_PKG_VERSION}.apk
RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
# DATE
RUN apk --update add --no-cache bash tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone && \
apk del tzdata && \
rm -rf /var/cache
# ADD JAVA
ENV JAVA_VERSION_MAJOR=8 \
JAVA_VERSION_MINOR=73 \
JAVA_VERSION_BUILD=02 \
JAVA_PACKAGE=server-jre
# The JDK reference version / server-jre / jdk
# 8/73/02
# 7/80/15
RUN curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz" | gunzip -c - | tar -xf - && \
# apk del curl ca-certificates && \
mv jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}/jre /jre && \
mv jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}/include/linux /jre/linux && \
# rm /jre/bin/jjs && \
rm /jre/bin/keytool && \
rm /jre/bin/orbd && \
rm /jre/bin/pack200 && \
rm /jre/bin/policytool && \
rm /jre/bin/rmid && \
rm /jre/bin/rmiregistry && \
rm /jre/bin/servertool && \
rm /jre/bin/tnameserv && \
rm /jre/bin/unpack200 && \
# rm /jre/lib/ext/nashorn.jar && \
rm /jre/lib/jfr.jar && \
rm -rf /jre/lib/jfr && \
rm -rf /jre/lib/oblique-fonts && \
rm -rf /tmp/* && \
rm -rf /var/cache/* && \
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf
ENV JAVA_HOME /jre
ENV PATH ${PATH}:${JAVA_HOME}/bin
ENV CATALINA_HOME /apache-tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME
# let "Tomcat Native" live somewhere isolated
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR
RUN apk add --no-cache busybox
RUN apk add --no-cache libgcc
RUN apk add --no-cache pinentry-gtk
RUN apk add --no-cache gnupg
# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN set -ex \
&& for key in \
05AB33110949707C93A279E3D3EFE6B686867BA6 \
07E48665A34DCAFAE522E5E6266191C37C037D42 \
47309207D818FFD8DCD3F83F1931D684307A10A5 \
541FBE7D8F78B25E055DDEE13C370389288584E7 \
61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
713DA88BE50911535FE716F5208B0AB1D63011C7 \
79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
9BA44C2621385CB966EBA586F72C284D731FABEE \
A27677289986DB50844682F8ACB77FC2E86E29AC \
A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.6
ENV TOMCAT_TGZ_URL http://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
ENV TOMCAT_ASC_URL http://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc
RUN set -x \
\
&& apk add --no-cache --virtual .fetch-deps \
ca-certificates \
tar \
openssl \
&& wget -O tomcat.tar.gz "$TOMCAT_TGZ_URL" \
&& wget -O tomcat.tar.gz.asc "$TOMCAT_ASC_URL" \
&& gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz \
&& tar -xvf tomcat.tar.gz --strip-components=1 \
\
&& nativeBuildDir="$(mktemp -d)" \
&& tar -xvf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1 \
&& ls -l $nativeBuildDir \
&& apk add --no-cache --virtual .native-build-deps \
apr-dev \
gcc \
libc-dev \
make \
openssl-dev \
&& ( \
export CATALINA_HOME=$PWD \
&& cd $nativeBuildDir/native \
&& ./configure \
--libdir=$TOMCAT_NATIVE_LIBDIR \
--prefix=$CATALINA_HOME \
--with-apr="$(which apr-1-config)" \
--with-java-home=$JAVA_HOME \
--with-ssl=yes \
--with-os-type=linux \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
) \
&& runDeps="$( \
scanelf --needed --nobanner --recursive "$TOMCAT_NATIVE_LIBDIR" \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .tomcat-native-rundeps $runDeps \
&& apk del .fetch-deps .native-build-deps \
&& rm -rf "$nativeBuildDir" \
&& rm bin/tomcat-native.tar.gz
# verify Tomcat Native is working properly
RUN set -e \
&& nativeLines="$(catalina.sh configtest 2>&1)" \
&& nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')" \
&& nativeLines="$(echo "$nativeLines" | sort -u)" \
&& if ! echo "$nativeLines" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then \
echo >&2 "$nativeLines"; \
exit 1; \
fi
# Delete tomcat files
RUN rm -rf /apache-tomcat/bin/*.bat \
&& rm -rf /apache-tomcat/webapps/docs \
&& rm -rf /apache-tomcat/webapps/examples \
&& rm -rf /apache-tomcat/webapps/manager \
&& rm -rf /apache-tomcat/webapps/host-manager \
&& rm -rf /apache-tomcat/webapps/ROOT/* \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/*
RUN cat /apache-tomcat/conf/server.xml
RUN echo "TEST" > /apache-tomcat/webapps/ROOT/readme.txt
# WORKDIR
WORKDIR /apache-tomcat/webapps
EXPOSE 8080 8443
#ENTRYPOINT /apache-tomcat/bin/catalina.sh run
CMD ["/bin/bash"]
I am getting error like find: '/opt/ibm/wlp/bin': No such file or directory when building a docker image
FROM centos:latest
RUN yum -y install wget unzip;
ENV JAVA_VERSION 1.8.0_sr5fp7
ENV LIBERTY_VERSION 17.0.0_04
RUN export BASE_URL="https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/sdk/linux/x86_64/index.yml"; \
wget -q -U UA_IBM_JAVA_Docker -O /tmp/index.yml ${BASE_URL}; \
JAVA_URL=$(cat /tmp/index.yml | sed -n '/'${JAVA_VERSION}'/{n;p}' | sed -n 's/\s*uri:\s//p' | tr -d '\r'); \
wget -q -U UA_IBM_JAVA_Docker -O /tmp/ibm-java.bin ${JAVA_URL}; \
echo "INSTALLER_UI=silent" > /tmp/response.properties; \
echo "USER_INSTALL_DIR=/opt/ibm/java" >> /tmp/response.properties; \
echo "LICENSE_ACCEPTED=TRUE" >> /tmp/response.properties; \
mkdir -p /opt/ibm; \
chmod +x /tmp/ibm-java.bin; \
/tmp/ibm-java.bin -i silent -f /tmp/response.properties; \
rm -f /tmp/response.properties; \
rm -f /tmp/index.yml; \
rm -f /tmp/ibm-java.bin; \
cd /opt/ibm/java/jre/lib; \
rm -rf icc;
ENV JAVA_HOME=/opt/ibm/java/jre \
PATH=/opt/ibm/java/jre/bin:$PATH
RUN echo ${JAVA_HOME}; \
echo ${PATH};
RUN export LIB_BASE_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml"; \
wget -q -U UA-IBM-WebSphere-Liberty-Docker -O /tmp/index.yml ${LIB_BASE_URL}; \
LIBERTY_URL=$(cat /tmp/index.yml | sed -n '/'${LIBERTY_VERSION}'/{n;p}' | sed -n 's/\s*uri:\s//p' | tr -d '\r'); \
wget $LIBERTY_URL -U UA-IBM-WebSphere-Liberty-Docker -O /tmp/wlp.zip; \
unzip -q /tmp/wlp.zip -d /opt/ibm; \
rm -f /tmp/wlp.zip;
ENV PATH=/opt/ibm/wlp/bin:$PATH
LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd"; \
"ProductName"="WebSphere Application Server Liberty"; \
"ProductVersion"="17.0.0.4";
RUN find /opt/ibm/wlp/bin -type f -exec chmod 777 {} \;
RUN /opt/ibm/wlp/bin/server create;
ADD server.xml /opt/ibm/wlp/usr/servers/defaultServer/server.xml
RUN /opt/ibm/wlp/bin/installUtility install --acceptLicense webProfile-7.0 localConnector-1.0 jndi-1.0 adminCenter-1.0 appSecurity-2.0 concurrent-1.0 \
ldapRegistry-3.0 javaMail-1.5 jdbc-4.1 jaxrs-2.0 jpa-2.1 ssl-1.0 webCache-1.0;
ADD lib /opt/ibm/wlp/usr/servers/defaultServer/lib
ADD apps /opt/ibm/wlp/usr/servers/defaultServer/apps
ADD resources /opt/ibm/wlp/usr/servers/defaultServer/resources
ADD server.xml /opt/ibm/wlp/usr/servers/defaultServer/server.xml
EXPOSE 9080
EXPOSE 9043
CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"]
getting below message : The command '/bin/sh -c find /opt/ibm/wlp/bin -type f -exec chmod 777 {} \;' returned a non-zero code: 1
not sure what is wrong ,please help
I try to install OpenJDK9 and Gradle 4.5.1 in a Docker image.
This is my Dockerfile:
FROM ubuntu:latest
MAINTAINER Hari Sekhon (https://www.linkedin.com/in/harisekhon)
LABEL Description="Java + Ubuntu (OpenJDK)"
ENV DEBIAN_FRONTEND noninteractive
ARG JAVA_VERSION=9
ARG JAVA_RELEASE=JDK
ENV JAVA_HOME=/usr
RUN bash -c ' \
set -euxo pipefail && \
apt-get update && \
pkg="openjdk-$JAVA_VERSION"; \
if [ "$JAVA_RELEASE" = "JDK" ]; then \
pkg="$pkg-jdk-headless"; \
else \
pkg="$pkg-jre-headless"; \
fi; \
apt-get install -y --no-install-recommends "$pkg" && \
apt-get clean'
CMD /bin/bash
#install Gradle
RUN wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
&& unzip gradle-4.5.1-bin.zip -d /opt \
&& rm gradle-4.5.1-bin.zip
# Set Gradle in the environment variables
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:/opt/gradle-4.5.1/bin
And I am getting an error:
ubuntu#automation-ubuntu-17:~/dockerFiles$ The command '/bin/sh -c
bash -c ' set -euxo pipefail && apt-get update &&
pkg="openjdk-$JAVA_VERSION"; if [ "$JAVA_RELEASE" = "JDK" ]; then
pkg="$pkg-jdk-headless"; else pkg="$pkg-jre-headless";
fi; apt-get install -y --no-install-recommends "$pkg" &&
apt-get clean'' returned a non-zero code: 100
The ubuntu:latest tag is currently ubuntu:18.04 (bionic), which only contains the java packages for openjdk-8-jdk-headless and openjdk-11-jdk-headless but not openjdk-9-jdk-headless (which has already reached end-of-life, at least for public updates).
openjdk-9-jdk-headless is available in ubuntu:16.04 (xenial), though.
I got the build working by switching to ubuntu:16.04, and also adding wget and unzip to the list of packages to install as they are subsequently used to download and unpack gradle but are not installed by default.
FROM ubuntu:16.04
MAINTAINER Hari Sekhon (https://www.linkedin.com/in/harisekhon)
LABEL Description="Java + Ubuntu (OpenJDK)"
ENV DEBIAN_FRONTEND noninteractive
ARG JAVA_VERSION=9
ARG JAVA_RELEASE=JDK
ENV JAVA_HOME=/usr
RUN bash -c ' \
set -euxo pipefail && \
apt-get update && \
pkg="openjdk-$JAVA_VERSION"; \
if [ "$JAVA_RELEASE" = "JDK" ]; then \
pkg="$pkg-jdk-headless"; \
else \
pkg="$pkg-jre-headless"; \
fi; \
apt-get install -y --no-install-recommends wget unzip "$pkg" && \
apt-get clean'
CMD /bin/bash
#install Gradle
RUN wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
&& unzip gradle-4.5.1-bin.zip -d /opt \
&& rm gradle-4.5.1-bin.zip
# Set Gradle in the environment variables
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:/opt/gradle-4.5.1/bin
I am trying to execute a Grizzly HTTP Server inside a container.
My problem is that when I am running the container (using docker-compose) the container shuts down after a few seconds.
Here is my server Dockerfile:
FROM alpine:3.5
MAINTAINER Maybe One <maybe#maybe.com>
# Java Version and other ENV
ENV JAVA_VERSION_MAJOR=8 \
JAVA_VERSION_MINOR=102 \
JAVA_VERSION_BUILD=14 \
JAVA_PACKAGE=jdk \
JAVA_JCE=standard \
JAVA_HOME=/opt/jdk \
PATH=${PATH}:/opt/jdk/bin \
GLIBC_VERSION=2.23-r3 \
LANG=C.UTF-8
RUN apk upgrade --update && \
apk add --update libstdc++ curl ca-certificates bash && \
for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION} glibc-i18n-${GLIBC_VERSION}; do curl -sSL https://github.com/andyshinn/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done && \
apk add --allow-untrusted /tmp/*.apk && \
rm -v /tmp/*.apk && \
( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) && \
echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh && \
/usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib && \
mkdir /opt && \
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" -o /tmp/java.tar.gz \
http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz && \
gunzip /tmp/java.tar.gz && \
tar -C /opt -xf /tmp/java.tar && \
ln -s /opt/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR} /opt/jdk && \
if [ "${JAVA_JCE}" == "unlimited" ]; then echo "Installing Unlimited JCE policy" >&2 && \
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" -o /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip \
http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION_MAJOR}/jce_policy-${JAVA_VERSION_MAJOR}.zip && \
cd /tmp && unzip /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip && \
cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /opt/jdk/jre/lib/security; \
fi && \
sed -i s/#networkaddress.cache.ttl=-1/networkaddress.cache.ttl=30/ $JAVA_HOME/jre/lib/security/java.security && \
apk del curl glibc-i18n && \
rm -rf /opt/jdk/*src.zip \
/opt/jdk/lib/missioncontrol \
/opt/jdk/lib/visualvm \
/opt/jdk/lib/*javafx* \
/opt/jdk/jre/plugin \
/opt/jdk/jre/bin/javaws \
/opt/jdk/jre/bin/jjs \
/opt/jdk/jre/bin/orbd \
/opt/jdk/jre/bin/pack200 \
/opt/jdk/jre/bin/policytool \
/opt/jdk/jre/bin/rmid \
/opt/jdk/jre/bin/rmiregistry \
/opt/jdk/jre/bin/servertool \
/opt/jdk/jre/bin/tnameserv \
/opt/jdk/jre/bin/unpack200 \
/opt/jdk/jre/lib/javaws.jar \
/opt/jdk/jre/lib/deploy* \
/opt/jdk/jre/lib/desktop \
/opt/jdk/jre/lib/*javafx* \
/opt/jdk/jre/lib/*jfx* \
/opt/jdk/jre/lib/amd64/libdecora_sse.so \
/opt/jdk/jre/lib/amd64/libprism_*.so \
/opt/jdk/jre/lib/amd64/libfxplugins.so \
/opt/jdk/jre/lib/amd64/libglass.so \
/opt/jdk/jre/lib/amd64/libgstreamer-lite.so \
/opt/jdk/jre/lib/amd64/libjavafx*.so \
/opt/jdk/jre/lib/amd64/libjfx*.so \
/opt/jdk/jre/lib/ext/jfxrt.jar \
/opt/jdk/jre/lib/ext/nashorn.jar \
/opt/jdk/jre/lib/oblique-fonts \
/opt/jdk/jre/lib/plugin.jar \
/tmp/* /var/cache/apk/*
# Maven
ENV MAVEN_VERSION 3.3.9
ENV MAVEN_HOME /usr/lib/mvn
ENV PATH $MAVEN_HOME/bin:$PATH
RUN wget http://ftp.fau.de/apache/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz && \
tar -zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz && \
rm apache-maven-$MAVEN_VERSION-bin.tar.gz && \
mv apache-maven-$MAVEN_VERSION /usr/lib/mvn
# Workspace
ENV WORKSPACE /home/app/
RUN mkdir -p $WORKSPACE
WORKDIR $WORKSPACE
COPY . $WORKSPACE # Copy Server Project
RUN mvn clean install -DskipTests
ENTRYPOINT mvn exec:java
docker-compose.yml
version: '2.1'
services:
server:
build: ./server/
ports:
- "8080:8080"
server docker logs:
... maven...
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) # restful.littleapp ---
Jan 30, 2017 2:10:18 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [0.0.0.0:8080]
Jan 30, 2017 2:10:18 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
Jersey app started with WADL available at http://0.0.0.0:8080/littleapp/application.wadl
Hit enter to stop it...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.507 s
[INFO] Finished at: 2017-01-30T14:10:18+00:00
Jan 30, 2017 2:10:18 PM org.glassfish.grizzly.http.server.NetworkListener shutdownNow
INFO: Stopped listener bound to [0.0.0.0:8080]
[INFO] Final Memory: 37M/90M
[INFO] ------------------------------------------------------------------------
Normally, the server has to listen...
The problem is probably that your main class is waiting for input before stopping the grizzly server. Since the docker container is not run in interactive mode it will never get input on command line and the System.in is terminated. The mvn exec process stops.
You should find a way to keep the grizzly server running without waiting for input.
Something like
server.start();
Thread.currentThread().join(); // instead of System.in.read();
edit: seems there is a solution like this already described on s.o. grizzly-http-server-should-keep-running which also incorporates a graceful shutdown by mean of a shutdownhook.
I aim to make a docker image that contains qt-android and android-studio tool. I took like base for dockerfile this one, and, instead of installing software-properties-common, I've put to install build-essential and libgl1-mesa-dev. Both Java and theses libraries were installed with success, but, then, basic commands like mkdir, ls, cd turned to be unrecognizable, making docker build process return with code 127 (command not found).
Why does this occurs?
I found that I couldn't even get your Dockerfile to display the issue without making some changes earlier in the image. The bit that was actually your problem though is:
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH JAVA_HOME/bin
ENV CLASSPATH JAVA_HOME/lib/tools.jar
ENV MANPATH JAVA_HOME/man
RUN export JAVA_HOME PATH CLASSPATH MANPATH
Should become:
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/tools.jar
ENV MANPATH $JAVA_HOME/man
This is because when you set the PATH you shouldn't remove the current contents of it (hence $PATH:) and you want to add the value of the JAVA_HOME variable rather than the literal string JAVA_HOME (hence $JAVA_HOME/bin).
Also, anything you set with ENV you will not need to export as it will be available for every process in your image.
I also had to install some packages to make add-apt-repository available but I'm not 100% sure if this is because ubuntu:latest refers to a different image on my system (possibly you should consider using a tag for the specific version you wish to use like ubuntu:xenial).
I also had to install wget & I corrected a number of places where you were using wget -O - where you didn't mean to (as you clearly wanted to write the files to disk).
The full Dockerfile which I used & was able to get to successfully build (I didn't test running it as I'm not sure on expected behaviour & don't speak your language) is:
# BASED ON : https://hub.docker.com/r/picoded/ubuntu-openjdk-8-jdk/~/dockerfile/
FROM ubuntu:latest
MAINTAINER Inacio Medeiros <inaciogmedeiros#gmail.com>
USER root
# Install the python script required for "add-apt-repository"
RUN apt-get update
RUN apt-get install build-essential libgl1-mesa-dev -y --force-yes
# Sets language to UTF8 : this works in pretty much all cases
ENV LANG pt_BR.UTF-8
RUN locale-gen $LANG
# Install add-apt-repository
RUN apt-get install software-properties-common python-software-properties wget -y --force-yes
# INSTALL JAVA
# ==============================================================
# Setup the openjdk 8 repo
RUN add-apt-repository ppa:openjdk-r/ppa
# Install java8
RUN apt-get update && apt-get install openjdk-8-jdk -y --force-yes
# Setup JAVA_HOME and other environment variables, this is useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/tools.jar
ENV MANPATH $JAVA_HOME/man
# ==============================================================
# Install QT Android
# ==============================================================
RUN mkdir /var/tmp/qt-android \
&& cd /var/tmp/qt-android \
&& wget "http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-linux-x64-android-5.5.0-2.run" \
&& chmod 777 qt-opensource-linux-x64-android-5.5.0-2.run
CMD /var/tmp/qt-android/qt-opensource-linux-x64-android-5.5.0-2.run
RUN cd /var/tmp/qt-android \
&& cd .. \
&& rm -rf /var/tmp/qt-android
# ==============================================================
# Install Ant
RUN apt-get install ant -y --force-yes
# Install SDK
RUN mkdir /opt/android-sdk \
&& cd /opt/android-sdk \
&& wget -O - "http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz" \
| tar --strip-components=1 -zxf -
#Install NDK
RUN mkdir /var/tmp/ndk \
&& cd /var/tmp/ndk \
&& wget "http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin" \
&& chmod 777 android-ndk-r10e-linux-x86_64.bin
CMD /var/tmp/ndk/android-ndk-r10e-linux-x86_64.bin
RUN cd /var/tmp/ndk \
&& cd .. \
&& rm -rf ndk
# Run SDK Update
RUN cd /opt/android-sdk/tools \
&& chmod 777 android
CMD /opt/android-sdk/tools/android update sdk
# Update libraries
RUN apt-get update && apt-get upgrade -y --force-yes
# Install libraries
RUN apt-get install -y --force-yes libstdc++6 libgcc1 zlib1g libncurses5
RUN apt-get install -y --force-yes libsdl1.2debian
# Install Android studio
# Source: https://github.com/wolfitem/docker/blob/master/Dockerfiles/android-studio/Dockerfile
RUN apt-get install unzip -y --force-yes
RUN wget 'https://dl.google.com/dl/android/studio/ide-zips/2.1.0.9/android-studio-ide-143.2790544-linux.zip' -O /tmp/studio.zip && unzip -d /opt /tmp/studio.zip && rm /tmp/studio.zip
#clean up
RUN apt-get clean
RUN apt-get purge
USER developer
CMD /opt/android-studio/bin/studio.sh
The thing which I did notice is there are a number of places where you do something like CMD /var/tmp/qt-android/qt-opensource-linux-x64-android-5.5.0-2.run where it looks like you are wanting to run /var/tmp/qt-android/qt-opensource-linux-x64-android-5.5.0-2.run. I think you have possibly misunderstood what CMD does - it doesn't actually run that command, it sets it up so that when you run a container from the image with docker run that will be the default command.
If I had to refactor the Dockerfile I would make it look more like the one below. But this currently fails to build because I changed it to actually call the things mentioned above. Currently qt-opensource-linux-x64-android-5.5.0-2.run fails because it can't find a display to connect to.
FROM ubuntu:latest
MAINTAINER Inacio Medeiros <inaciogmedeiros#gmail.com>
# Install the python script required for "add-apt-repository"
RUN apt-get update \
&& apt-get install -y --force-yes \
build-essential \
libgl1-mesa-dev \
python-software-properties \
software-properties-common \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Sets language to UTF8 : this works in pretty much all cases
ENV LANG pt_BR.UTF-8
RUN locale-gen $LANG
# INSTALL JAVA
# ==============================================================
# Setup the openjdk 8 repo
RUN add-apt-repository ppa:openjdk-r/ppa
# Install java8
RUN apt-get update \
&& apt-get install -y --force-yes \
openjdk-8-jdk \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Setup JAVA_HOME and other environment variables, this is useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/tools.jar
ENV MANPATH $JAVA_HOME/man
# ==============================================================
# Install QT Android
# ==============================================================
RUN mkdir -p /var/tmp/qt-android \
&& cd /var/tmp/qt-android \
&& wget "http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-linux-x64-android-5.5.0-2.run" \
&& chmod 777 qt-opensource-linux-x64-android-5.5.0-2.run \
&& /var/tmp/qt-android/qt-opensource-linux-x64-android-5.5.0-2.run \
&& cd / \
&& rm -rf /var/tmp/qt-android
# ==============================================================
# Install Ant
RUN apt-get update \
&& apt-get install -y --force-yes \
ant \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install SDK
RUN mkdir -p /opt/android-sdk \
&& cd /opt/android-sdk \
&& wget -O - "http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz" \
| tar --strip-components=1 -zxf -
#Install NDK
RUN mkdir /var/tmp/ndk \
&& cd /var/tmp/ndk \
&& wget "http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin" \
&& chmod 777 android-ndk-r10e-linux-x86_64.bin \
&& /var/tmp/ndk/android-ndk-r10e-linux-x86_64.bin \
&& cd / \
&& rm -rf /var/tmp/ndk
# Run SDK Update
RUN cd /opt/android-sdk/tools \
&& chmod 777 android \
&& /opt/android-sdk/tools/android update sdk
# Update libraries
RUN apt-get update \
&& apt-get upgrade -y --force-yes \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install libraries
RUN apt-get update \
&& apt-get install -y --force-yes \
libstdc++6 \
libgcc1 \
libsdl1.2debian \
zlib1g \
libncurses5 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install Android studio
# Source: https://github.com/wolfitem/docker/blob/master/Dockerfiles/android-studio/Dockerfile
RUN apt-get update \
&& apt-get install -y --force-yes \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN wget 'https://dl.google.com/dl/android/studio/ide-zips/2.1.0.9/android-studio-ide-143.2790544-linux.zip' -O /tmp/studio.zip \
&& unzip -d /opt /tmp/studio.zip \
&& rm /tmp/studio.zip
USER developer
CMD /opt/android-studio/bin/studio.sh
Let me know if you have any further questions and I will do my best to answer them.