Docker RUN istruzione (modifica di un file) non eseguita

Sto riscontrando un comportmento strano durante l'esecuzione di un Dockerfile (in https://github.com/Krijger/es-nagios-docker ). Fondamentalmente, aggiungo un file per aggiungere il suo contenuto a un file nell'image

ADD es-command /tmp/ RUN cat tmp/es-command >> /opt/nagios/etc/objects/commands.cfg 

Il problema è che mentre il command / tmp / es-command è presente nell'image risultante, il file comandi.cfg non è stato modificato.

Come preludio alla risposta accettata: il mio Dockerfile estende cpuguy83 / nagios , che definisce / opt / nagios / etc come volume.

Buono per il codice di esempio di esempio, che trova la causa del path.

La tua image cpuguy83/nagios viene da cpuguy83/nagios , da questa image https://github.com/cpuguy83/docker-nagios/blob/master/Dockerfile

È ansible visualizzare la directory /opt/nagios/etc impostata come VOLUME

  VOLUME ["/opt/nagios/var", "/opt/nagios/etc", "/opt/nagios/libexec", "/var/log/apache2", "/usr/share/snmp/mibs"] 

Poi si nota che il volume del docker non può essere modificato al prossimo commit da parte della nuova build.

Ecco perché puoi vedere le modifiche quando entri nel contenitore e la perderai quando esci.

Ecco come lo uso:

 ls ./ configure.sh commands.cfg cat configure.sh #!/bin/bash script_path=$( cd "$( dirname "$0" )" && pwd ) cp ${script_path}/commands.cfg /opt/nagios/etc/objects/ docker run -d --name nagios cpuguy83/nagios docker run --rm -v $(pwd):/tmp --volumes-from nagios --entrypoint /tmp/configure.sh cpuguy83/nagios