2016-10-20 2 views
1

я сделал изображение из Dockerfile:Docker Tomcat вышел 0 после запуска

FROM tomcat:8.0 
COPY target/javahello.war /usr/local/tomcat/webapps/ 
EXPOSE 8080 
CMD /usr/local/tomcat/bin/startup.sh 

Но сразу же после старта - это в "вышли":

$ sudo docker run -ti 957a86defe4f 
Using CATALINA_BASE: /usr/local/tomcat 
Using CATALINA_HOME: /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:  /usr/lib/jvm/java-7-openjdk-amd64/jre 
Using CLASSPATH:  /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
Tomcat started. 

И:

$ sudo docker ps -a | head 
CONTAINER ID  IMAGE                  COMMAND    CREATED    STATUS      PORTS      NAMES 
dc2309620baf  957a86defe4f:latest              "/bin/sh -c /usr/loc 25 seconds ago  Exited (0) 24 seconds ago        insane_elion  

logs ничего не показывать:

$ sudo docker logs dc2309620baf 
Using CATALINA_BASE: /usr/local/tomcat 
Using CATALINA_HOME: /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:  /usr/lib/jvm/java-7-openjdk-amd64/jre 
Using CLASSPATH:  /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
Tomcat started. 

Если я бегу startup.sh непосредственно из контейнера - Tomcat работает, как ожидалось:

$ sudo docker run -ti 957a86defe4f bash 
[email protected]:/usr/local/tomcat# ./bin/startup.sh 
Using CATALINA_BASE: /usr/local/tomcat 
Using CATALINA_HOME: /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:  /usr/lib/jvm/java-7-openjdk-amd64/jre 
Using CLASSPATH:  /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
Tomcat started. 
# ps -axu | grep tomcat 
root  15 44.7 1.1 6258648 193484 ?  Sl 14:54 0:04 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start 

Это что-то не так с моей CMD?

ответ

2

Tomcat с startup.sh запустит tomcat в фоновом режиме (как услугу), и докер выйдет с code 0, что является нормальным и ожидаемым поведением.

В этом случае вам необходимо запустить tomcat как процесс переднего плана с catalina.sh run.

FROM tomcat:8.0 
COPY target/javahello.war /usr/local/tomcat/webapps/ 
EXPOSE 8080 
CMD /usr/local/tomcat/bin/catalina.sh run 

При запуске startup.sh внутри контейнера он работает, потому что вы находитесь в «bash» (ваш процесс на переднем плане).

Смежные вопросы