We can start using Docker and creating a container with it.
Required installations
Create docker file using example below and save as dockerfile
FROM adoptopenjdk:8-jdk-hotspot
CMD ["gradle"]
ENV GRADLE_HOME /opt/gradle
RUN set -o errexit -o nounset \
&& echo "Adding gradle user and group" \
&& groupadd --system --gid 1000 gradle \
&& useradd --system --gid gradle --uid 1000 --shell /bin/bash --create-home gradle \
&& mkdir /home/gradle/.gradle \
&& chown --recursive gradle:gradle /home/gradle \
\
&& echo "Symlinking root Gradle cache to gradle Gradle cache" \
&& ln -s /home/gradle/.gradle /root/.gradle
VOLUME /home/gradle/.gradle
WORKDIR /home/gradle
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
fontconfig \
unzip \
wget \
\
bzr \
git \
mercurial \
openssh-client \
subversion \
&& rm -rf /var/lib/apt/lists/*
ENV GRADLE_VERSION 5.5.1
ARG GRADLE_DOWNLOAD_SHA256=222a03fcf2fcaf3691767ce9549f78ebd4a77e73f9e23a396899fb70b420cd00
RUN set -o errexit -o nounset \
&& echo "Downloading Gradle" \
&& wget --no-verbose --output-document = gradle.zip "https://services.gradle.org/distributions/gradle- ${ GRADLE_VERSION } -bin.zip" \
\
&& echo "Checking download hash" \
&& echo " ${ GRADLE_DOWNLOAD_SHA256 } *gradle.zip" | sha256sum --check - \
\
&& echo "Installing Gradle" \
&& unzip gradle.zip \
&& rm gradle.zip \
&& mv "gradle- ${ GRADLE_VERSION } " " ${ GRADLE_HOME } /" \
&& ln --symbolic " ${ GRADLE_HOME } /bin/gradle" /usr/bin/gradle \
\
&& echo "Testing Gradle installation" \
&& gradle --version
To build an image from this dockerfile you need to run that command line:
docker build -t gradle-project .
Gradle needs to get all dependencies every time we are going to run that docker image, then we need to create a
volume where it is going to save the dependencies after first time we running this image.
docker volume create --name gradle-cache
After that, we can run any gradle commands.
Running a Spring Boot project:
docker run --rm -u gradle -v gradle-cache:/home/gradle/.gradle -v "$PWD":/home/gradle/project -w /home/gradle/project -p 8081:8080 gradle-project /bin/bash -c "gradle clean && gradle bootRun"
HEADS UP : You need to be into project folder.
Your project is going to be published at localhost:8081 as parameters above say.