2015-09-25 12 views
6

che voglio sapere reagisce l'istruzione ENTRYPOINT da Dockerfiles quando patrimonio accade:Come direttiva EntryPoint Docker reagire quando si estende immagini

Diciamo per esempio ho un'immagine chiamato: jenkins

FROM java:8-jdk 
RUN ... 
ENTRYPOINT ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"] 

Eseguendo questa immagine, la direttiva ENTRYPOINT inizierà e installerà l'applicazione come previsto

Diciamo ora che voglio t per estendere questa immagine con un nuovo Dockerfile, io lo chiamo: Jenkins-custom

FROM jenkins 

# enable start tls 
RUN echo "JENKINS_JAVA_OPTIONS=\"-Dmail.smtp.starttls.enable=true\"" >> /etc/default/jenkins 
RUN chown jenkins:docker /etc/default/jenkins 

Devo considerare che:

  1. il Jenkins entrypoint viene attivato dopo le mie nuove linee .
  2. entrypoint sarà trigerato prima delle mie nuove linee.
  3. entrypoint non verrà attivato.

Nel mio esempio, sto tentando di attivare STARTTLS nell'immagine docker Jenkins predefinita, dovrei semplicemente riavviare il processo nella seconda immagine?

Grazie a tutti;)

risposta

4

i comandi nel ENTRYPOINT esecuzione quando si esegue docker run. Tuttavia, i comandi in RUN vengono eseguiti quando si esegue docker build.

Nel tuo caso, cosa sta per accadere è che quando si docker build l'immagine, un nuovo file di configurazione Jenkins viene generato, e poi quando si docker run esso, tini viene lanciato, ed a sua volta eseguire il jenkins-entrypoint.sh.


Se quello che stai cercando di fare è cambiare la configurazione di Jenkins e nient'altro, quello che hai qui è buono.

+0

Non potrei essere abbastanza sicuro, grazie per avermelo ricordato! – BigDong

+0

@BigDong Tieni presente che Docker emette effettivamente ciò che fa quando esegui 'docker build', quindi dovresti vedere che Jenkins non ** inizia ** da quel punto;) –

Problemi correlati