Skip to content

Instantly share code, notes, and snippets.

@c9katayama
Last active April 30, 2018 06:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c9katayama/634b14ea65f3910448e0c93b4637a1c1 to your computer and use it in GitHub Desktop.
Save c9katayama/634b14ea65f3910448e0c93b4637a1c1 to your computer and use it in GitHub Desktop.
Build Ubuntu docker image with JDK
#/bin/bash
DOCKER_USER=XXXXXX
UBUNTU_VERSION=18.04
# JDK Major version. e.g 8,9,10
function getMajorVersion() {
if [[ "$1" =~ ^jdk1.8.* ]]; then
echo "8"
else
var=`echo $1 | cut -d- -f2`
var=`echo $var | cut -d. -f1`
echo $var
fi
}
function getMinorVersion() {
if [[ "$1" =~ ^jdk1.8.* ]]; then
var=`echo $1 | cut -d_ -f2`
echo $var
else
var=`echo $1 | cut -d- -f2`
echo $var
fi
}
DIR="$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd)"
cd $DIR
ZIPFILE=$DIR/jdk-*.tar.gz
ZIP_NUM=`ls $ZIPFILE | wc -l`
if [ $ZIP_NUM -ne 1 ]
then
echo "[ERROR]Failed to create image. Please put a jdk tar file" >&2
cd $DIR
exit 1
fi
rm -rf image
mkdir image
cd image
tar xvzf ../jdk-*.tar.gz
JDK_DIR=`ls`
JDK_VERSION=$JDK_DIR
echo "Target JDK : $JDK_VERSION"
UNUSED_FILE=`find . -name src.zip`
echo "Remove unused file:$UNUSED_FILE"
rm $UNUSED_FILE
#Get JDK version
MAJOR_VERSION=`getMajorVersion $JDK_VERSION`
echo "MAJOR VERSION : $MAJOR_VERSION"
MINOR_VERSION=`getMinorVersion $JDK_VERSION`
echo "MINOR VERSION : $MINOR_VERSION"
#Move JDK dir
mv $JDK_DIR jdk
#Create Dockerfile
echo "Create Dockerfile Ubuntu version=$UBUNTU_VERSION"
cat <<EOF > Dockerfile
FROM ubuntu:$UBUNTU_VERSION
RUN apt-get update
#for ubuntu16.04
#RUN apt-get install -y software-properties-common python-software-properties
# Define working directory.
WORKDIR /opt/docker
#Install JDK
RUN mkdir -p /usr/lib/jvm/java
COPY jdk /usr/lib/jvm/java
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java
ENV PATH \$PATH:\$JAVA_HOME/bin
RUN ln -s \$JAVA_HOME/bin/java /usr/bin/java
# Define default command.
CMD ["bash"]
EOF
# Build Docker image
LATEST_IMAGE="$DOCKER_USER/java$MAJOR_VERSION:latest"
echo "Build latest image: $LATEST_IMAGE"
docker build . -t $LATEST_IMAGE
VERSION_IMAGE="$DOCKER_USER/java$MAJOR_VERSION:$MINOR_VERSION-ubuntu$UBUNTU_VERSION"
echo "Build version image: $VERSION_IMAGE"
docker build . -t $VERSION_IMAGE
#Push image
echo "Are you sure you want to push images to DockerHub?"
echo "[y/n]"
read answer
case $answer in
y)
;;
*)
echo "push is canceled."
exit 1
;;
esac
echo "Login Docker Hub"
docker login
echo "Push latest image: $LATEST_IMAGE"
docker push $LATEST_IMAGE
echo "Push version image: $VERSION_IMAGE"
docker push $VERSION_IMAGE
echo "done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment