Public Repository

Last pushed: 3 months ago
Short Description
Runs the Wildbook Tomcat Application
Full Description

This Docker Image runs the Wildbook Tomcat Application.
For more details on Wildbook go to http://www.wildbook.org

Dockerfile (This Dockerfile builds the docker image from a pre-built wildbook.war file)


FROM tomcat:latest
LABEL maintainer Gary Forghetti, Docker Inc.

# Start Tomcat when the container is run
CMD ["catalina.sh", "run"]

WORKDIR /tmp

ARG MYSQL_VER="5.1.43"

# Copy the Wildbook configuration file from the docker build directory to the docker container's /tmp directory
COPY ./jdoconfig.properties jdoconfig.properties

RUN apt-get update -qq && \
     (which jar || apt-get install --no-install-recommends -y openjdk-8-jdk) && \
     apt-get clean && \
     rm -rf /var/lib/apt/lists/* && \
     chmod 600 ./jdoconfig.properties && \
     wget --quiet http://www.wildme.org/wildbook/data/media/wildbook.war && \
     jar -xf ./wildbook.war && \
     rm -f ./wildbook.war && \
     mv ./jdoconfig.properties ./WEB-INF/classes/bundles/jdoconfig.properties && \
     wget --quiet https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_VER}.zip && \
     unzip -qq mysql-connector-java-${MYSQL_VER}.zip && \
     cp ./mysql-connector-java-${MYSQL_VER}/mysql-connector-java-${MYSQL_VER}-bin.jar ./WEB-INF/lib && \
     rm -f ./unzip mysql-connector-java-${MYSQL_VER}.zip && \
     jar -cf ./wildbook.war . && \
     mv ./wildbook.war /usr/local/tomcat/webapps/wildbook.war

Dockerfile (This Dockerfile builds the wildbook.war file from the Wildbook source code in GitHub)

#################################################################################################################################################
# Doing a multi stage build to reduce the size of the Wildbook Tomcat Application container
#################################################################################################################################################

#################################################################################################################################################
# Build the Tomcat Wildbook WAR file in the first stage
#################################################################################################################################################
FROM oracle/openjdk:latest as builder
ARG BUILDDIR="/tmp/build"
ARG MYSQL_VER="5.1.43"
WORKDIR ${BUILDDIR}
#################################################################################################################################################
# Copy the Wildbook configuration file from the docker build directory to the docker container's /tmp directory
#################################################################################################################################################
COPY ./jdoconfig.properties jdoconfig.properties
RUN yum makecache fast && \
     yum install git tar wget -y && \
     wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo && \
     sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo && \
     yum install apache-maven -y && \
     git clone https://github.com/WildbookOrg/Wildbook.git --branch 6.x && \
     cd Wildbook && \
     mvn clean install --quiet -DskipTests -Dmaven.javadoc.skip=true && \
     cd ${BUILDDIR} && \
     cp ./Wildbook/target/wildbook-6.0.0-EXPERIMENTAL.war ./wildbook.war && \
     rm -rf ./Wildbook && \
     jar -xf ./wildbook.war && \
     rm -f ./wildbook.war && \
     chmod 600 ./jdoconfig.properties && \
     mv ./jdoconfig.properties ./WEB-INF/classes/bundles/jdoconfig.properties && \
     wget --quiet https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_VER}.tar.gz && \
     tar zxf mysql-connector-java-${MYSQL_VER}.tar.gz && \
     cp ./mysql-connector-java-${MYSQL_VER}/mysql-connector-java-${MYSQL_VER}-bin.jar ./WEB-INF/lib && \
     rm -f ./unzip mysql-connector-java-${MYSQL_VER}.tar.gz && \
     jar -cf ./wildbook.war .

#################################################################################################################################################
# Now install the application on a base Tomcat image
#################################################################################################################################################
FROM tomcat:latest
ARG BUILDDIR=/tmp/build
LABEL maintainer="Gary Forghetti, Docker Inc."
#################################################################################################################################################
# Start Tomcat when the container is run
#################################################################################################################################################
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
#################################################################################################################################################
# Copy the Wildbook war file from the previous build stage
#################################################################################################################################################
COPY --from=builder ${BUILDDIR}/wildbook.war /usr/local/tomcat/webapps/wildbook.war

jdoconfig.properties (This file needs to be placed in the same directory as the Dockerfile. It contains the MySQL database connection information)

##################################################################################################
# This properties file contains the Wildbook DataNucleus MySQL database configuration parameters.
##################################################################################################

##################################################################################################
# The following three lines create a connection to the MySQL database.
##################################################################################################
datanucleus.ConnectionDriverName=com.mysql.jdbc.Driver
datanucleus.ConnectionURL=jdbc:mysql://mysql-wildbook:3306/wildbook?useSSL=false
javax.jdo.PersistenceManagerFactoryClass = org.datanucleus.api.jdo.JDOPersistenceManagerFactory
##################################################################################################

datanucleus.ConnectionUserName = wildbook
datanucleus.ConnectionPassword = wildbook
datanucleus.schema.autoCreateAll = true
datanucleus.NontransactionalRead = true
datanucleus.Multithreaded = true
datanucleus.RestoreValues = true
datanucleus.storeManagerType = rdbms
datanucleus.maxFetchDepth = -1
datanucleus.cache.collections.lazy = false

To run the Wildbook Application

Bring up a mysql server

docker run -d -p 3306:3306  --name mysql-wildbook -e MYSQL_RANDOM_ROOT_PASSWORD=true  -e MYSQL_DATABASE=wildbook -e MYSQL_USER=wildbook -e MYSQL_PASSWORD=wildbook mysql:latest

Start the Tomcat Willdbook container

docker container run -d -p 8080:8080 --name tomcat-wildbook --link mysql-wildbook gforghetti/tomcat-wildbook:latest

Or you can use docker-compose

docker-compose-yaml

version: '3'
services:
  wildbook:
    image: gforghetti/tomcat-wildbook:latest
    container_name: tomcat-wildbook
    depends_on:
      - mysql-wildbook
    ports:
      - "8080:8080"
  mysql-wildbook:
    image: "mysql:latest"
    container_name: mysql-wildbook
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=true
      - MYSQL_DATABASE=wildbook
      - MYSQL_USER=wildbook
      - MYSQL_PASSWORD=wildbook
    volumes:
      - wildbook:/var/lib/mysql
volumes:
    wildbook:

Command

docker-compose up -d

Login to the Tomcat Wildbook Application

URL: http://docker_node_host:8080/wildbook

User: tomcat
Password: tomcat123

Docker Pull Command
Owner
gforghetti