Deployment of multiple instances of Tomcat in single Dockerfile using Supervisor

I have the following Dockerfile.

FROM java:8-jre

RUN apt-get update && apt-get install -y supervisor
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf


#####################################################################

ENV CATALINA_HOME /usr/local/tomcatppsraptor
#ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
05AB33110949707C93A279E3D3EFE6B686867BA6 \
07E48665A34DCAFAE522E5E6266191C37C037D42 \
47309207D818FFD8DCD3F83F1931D684307A10A5 \
541FBE7D8F78B25E055DDEE13C370389288584E7 \
61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
9BA44C2621385CB966EBA586F72C284D731FABEE \
A27677289986DB50844682F8ACB77FC2E86E29AC \
A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.32
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-                                                                                                                               
$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

RUN set -x \
&& curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
&& curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
&& gpg --verify tomcat.tar.gz.asc \
&& tar -xvf tomcat.tar.gz --strip-components=1 \
&& rm bin/*.bat \
&& rm tomcat.tar.gz*



#configuring instance of Tomcat for corepay module
ADD tomcat-users.xml /usr/local/tomcatppsraptor/conf/
ADD ppsraptorbackend.war /usr/local/tomcatppsraptor/webapps/
ADD pps/server.xml /usr/local/tomcatppsraptor/conf/


##################################################################
ENV CATALINA_HOME /usr/local/tomcat
#ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
05AB33110949707C93A279E3D3EFE6B686867BA6 \
07E48665A34DCAFAE522E5E6266191C37C037D42 \
47309207D818FFD8DCD3F83F1931D684307A10A5 \
541FBE7D8F78B25E055DDEE13C370389288584E7 \
61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
9BA44C2621385CB966EBA586F72C284D731FABEE \
A27677289986DB50844682F8ACB77FC2E86E29AC \
A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.32
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-  
$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

RUN set -x \
&& curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
&& curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
&& gpg --verify tomcat.tar.gz.asc \
&& tar -xvf tomcat.tar.gz --strip-components=1 \
&& rm bin/*.bat \
&& rm tomcat.tar.gz*



#configuring instance of Tomcat for corepay module
ADD tomcat-users.xml /usr/local/tomcat/conf/
ADD corepayswitchservService-1.3.2-RELEASE.war /usr/local/tomcat/webapps/

##################################################################

EXPOSE 8181 8080
CMD ["/usr/bin/supervisord"]

And here is the supervisord.conf

  • DNS settings don't work in Docker CE
  • docker is great for run-anywhere but what about the machines to host docker?
  • Centos7 docker-py doesn't seem to be installed
  • Install R on windows nanoserver image using powershell
  • how to connect to container in docker stack deploy
  • Automated builds for multiple containers
  • [supervisord]
    nodaemon=true
    
    [program:tomppsraptor]
    command=/usr/local/tomcatppsraptor/bin/catalina.sh run
    
    [program:tomcorepay]
    command=/usr/local/tomcat/bin/catalina.sh run
    

    I have made changes in server.xml to map connector ports listen on different ports on the browser.

    The problem I am facing is when I run the image in docker, I get only the second Tomcat instance (tomcorepay) hearing at mapped port, during runtime, in the browser and first part of tomcat setup in Dockerfile doesnot respond.

    Have I messed up with the ENV variables by overwriting them below in Dockerfile?

    What changes should I make so that I get both the instances, (or, more than two), to work completely fine?

  • How to limit Docker filesystem space available to container(s)
  • How to debug Symfony command using Xdebug and phpStorm?
  • Docker - Execute a bash when running a container
  • Docker Swarm vs. Docker Cluster
  • Log doesn't save to file in docker environment
  • Docker: Not a valid repository:
  • Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.