2017-06-12 4 views
0

Hier ist die Sache. Ich habe folgendes Dockerfile:Tomcat friert im Docker-Container beim Start ein

DOCKERFILE

FROM centos:centos7 
MAINTAINER Legos 
ADD epel-release-7-9.noarch.rpm /etc/extras/epel-release-7-9.noarch.rpm 
RUN rpm -Uvh /etc/extras/epel-release*rpm 

# Install prepare infrastructure 
RUN yum -y update && \ 
yum -y install wget && \ 
yum -y install tar && \ 
yum -y install haveged && \ 
yum -y install rng-tools 

RUN chkconfig haveged on 

# Prepare environment 
ADD jdk* /opt/ 
WORKDIR /opt/ 
RUN yum localinstall -y "jdk-8u131-linux-x64.rpm" 
RUN echo "1"|alternatives --config java 
ENV JAVA_HOME /usr/java/jdk1.8.0_131 
#ENV JAVA_OPTS "-Djava.security.egd=/dev/./urandom" 

ENV CATALINA_HOME /opt/tomcat 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/scripts 

# Install Tomcat 
ENV TOMCAT_MAJOR 8 
ENV TOMCAT_VERSION 8.5.15 

RUN wget http://www-eu.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \ 
tar -xvf apache-tomcat-${TOMCAT_VERSION}.tar.gz && \ 
rm apache-tomcat*.tar.gz && \ 
mv apache-tomcat* ${CATALINA_HOME} 

RUN chmod +x ${CATALINA_HOME}/bin/*sh 

# Create Tomcat admin user 
ADD create_admin_user.sh $CATALINA_HOME/scripts/create_admin_user.sh 
ADD tomcat.sh $CATALINA_HOME/scripts/tomcat.sh 

ADD webapps/gireUsuarios.war $CATALINA_HOME/webapps/gireUsuarios.war 
ADD conf/tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.xml 
ADD conf/Catalina/localhost/manager.xml $CATALINA_HOME/conf/Catalina/localhost/manager.xml 

RUN chmod +x $CATALINA_HOME/scripts/*.sh 

# Create tomcat user 
RUN groupadd -r tomcat && \ 
useradd -g tomcat -d ${CATALINA_HOME} -s /sbin/nologin -c "Tomcat user" tomcat && \ 
chown -R tomcat:tomcat ${CATALINA_HOME} 

WORKDIR /opt/tomcat 

EXPOSE 8080 8009 8443 9100-9120 4369 80 

RUN yum clean all 

USER tomcat 
CMD ["tomcat.sh"] 

TL; DR: Es ist ein Bild für eine CentOS 7 Maschine mit Tomcat 8.5 und Java 1.8. Der 'tomcat.sh' führt catalina.sh nur aus, nachdem er einen Benutzer in der Konfiguration erstellt hat, daher gibt es nicht viel zu sagen.

Die Sache ist dies: Wenn ich einen Container erstellen, friert der Container beim Bereitstellen der WAR-Datei, die ich übergebe. Ich habe versucht, beide anderen WAR-Dateien mit positiven Ergebnissen zu starten, und ich habe versucht, diese problematische WAR-Datei in meinen Maschinen Tomcat 8.5 (ein direkt aus der Box Tomcat ohne viel mehr als die Zugabe der Manager-GUI) zu implementieren Benutzer), und es wird erfolgreich bereitgestellt.

Also, die Frage: eine Idee, warum Tomcat während der Bereitstellung in einem Docker-Container einfrieren würde? Ich habe versucht, die JAVA_OPTS = -Djava.security.egd =/dev /./Urandom Lösung, die angeblich mit dieser Art von Ereignissen hilft, aber es hat nicht funktioniert. Vorschläge?

Antwort

0

Gelöst es. Ich habe die zusätzlichen Parameter zu JAVA_OPTS hinzugefügt und es hat funktioniert. Der endgültige JAVA_OPTS ist wie folgt:

-Djava.security.egd=/dev/./urandom -Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC