Come scrivere Dockerfile per avviare un server web e arricchirlo per alcuni requisiti

Vorrei usare questo file da collezione ingenuamente.

FROM test/tomcat ENV CATALINA_HOME /tomcat RUN ${CATALINA_HOME}/bin/catalina.sh start RUN wget localhost:8080/Writer/WriterServlet 

Il risultato è sicuramente quanto segue

 docker build --no-cache=true - < Dockerfile Sending build context to Docker daemon 3.072 kB Sending build context to Docker daemon Step 0 : FROM test/tomcat ---> 2a85ccb3dd07 Step 1 : ENV CATALINA_HOME /tomcat ---> Running in 76872d1acdd5 ---> 30ad1fe832d6 Removing intermediate container 76872d1acdd5 Step 2 : RUN ${CATALINA_HOME}/bin/catalina.sh start ---> Running in 5947560a3428 Tomcat started. ---> ea670dd1d3ff Removing intermediate container 5947560a3428 Step 3 : RUN wget localhost:8080/Writer/WriterServlet ---> Running in 6aa5c9be8569 --2014-12-19 03:08:16-- http://localhost:8080/Writer/WriterServlet Resolving localhost (localhost)... ::1, 127.0.0.1 Connecting to localhost (localhost)|::1|:8080... failed: Connection refused. Connecting to localhost (localhost)|127.0.0.1|:8080... failed: Connection refused. 2014/12/19 11:08:16 The command [/bin/sh -c wget localhost:8080/Writer/WriterServlet] returned a non-zero code: 4 

In questo caso, Tomcat offre un'interface per scrivere un file, quindi devo build il server tomcat.

Forse perché i wget non possono aspettare tomcat per iniziare.

O perché la struttura del contenitore stratificata del docker causa che, quando nel passaggio 3 (wget), il tomcat giù di nuovo.

Quindi la mia domanda in sintesi è, posso scrivere una build docker per mantenere un po 'di process in esecuzione per i requisiti interattivi?

I passaggi di build di file Docker non mantengono un contenitore o un sistema operativo in esecuzione. Ogni row fa una modifica al file system, il docker memorizza le modifiche solo nel file system. Tutti i processi che vengono avviati vengono scartati.

Docker può avviare solo processi a lungo termine quando viene eseguito un contenitore (non quando viene creato un contenitore). È necessario utilizzare ENTRYPOINT o CMD per call uno script personalizzato all'avvio del contenitore. Questo script inizia a eseguire il tomcat e eseguire il wget e apportre le modifiche necessarie prima di avviare un lungo process di esecuzione, ad esempio una coda sui registri tomcat.