Last active
April 30, 2018 06:34
-
-
Save c9katayama/634b14ea65f3910448e0c93b4637a1c1 to your computer and use it in GitHub Desktop.
Build Ubuntu docker image with JDK
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/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