This demo shows using Java/Jakarta EE thin wars with Docker repositories, layering, and caching. It uses Liberty server under Docker using the websphere-liberty
image that is available from the online Docker Hub repository. The following is how you run the demo.
The first step to getting the application running is getting the database up. Please follow the instructions below to get the database running.
- Ensure that all running Docker containers are shut down. You may want to do this by restarting Docker. The demo depends on containers started in the exact order as below (this will be less of a problem when we start using Kubernetes).
- Make sure Docker is running. Open a console.
- Enter the following command and wait for the database to come up fully.
docker run -it --rm -e POSTGRES_HOST_AUTH_METHOD=trust --name jakartaee-cafe-db -v pgdata:/var/lib/postgresql/data -p 5432:5432 postgres
- The database is now ready (to stop it, simply press Control-C after the Java EE application is shutdown).
The next step is to get the application up and running. Follow the steps below to do so.
- Open Eclipse.
- Do a full build of the jakartaee-cafe application via Maven by going to Right click the application -> Run As -> Maven install.
- Browse to where you have this repository code in your file system. You will now need to copy the war file to where we will build the Docker image. You will find the war file under jakartaee/jakartaee-cafe/target. Copy the war file to thin-war/.
- You should explore the Dockerfile in this directory used to build the Docker image. It simply starts from the
websphere-liberty
image, adds thejakartaee-cafe.war
from the current directory in to thedropins
directory, copies the PostgreSQL driverpostgresql-42.2.18.jar
into theshared/resources
directory and replaces the defaultServer configuration fileserver.xml
. - Notice how the data source properties in the
server.xml
file looks like:
serverName="172.17.0.2" portNumber="5432" databaseName="postgres" user="postgres" password=""
-
Note, we are depending on the fact that the database is the first container to start and has the IP 172.17.0.2. For Mac and Windows users the serverName could be changed to
host.docker.internal
. That will make the container start order less significant. -
Open a console. Build a Docker image tagged
jakartaee-cafe
navigating to the thin-war/ directory as context and issuing the command:docker build -t jakartaee-cafe .
-
To run the newly built image, use the command:
docker run -it --rm -p 9080:9080 jakartaee-cafe
-
Wait for WebSphere Liberty to start and the application to deploy sucessfully (to stop the application and Liberty, simply press Control-C).
-
Once the application starts, you can test the REST service at the URL: http://localhost:9080/jakartaee-cafe/rest/coffees or via the JSF client at http://localhost:9080/jakartaee-cafe/index.xhtml.