Qual è la migliore procedura per utilizzare molti comandi RUN in un Dockerfile per configurare l'immagine rispetto a una singola istruzione CMD per eseguire uno script all'avvio del contenitore ?Istruzioni RUN multiple e singola CMD per eseguire lo script di installazione in Dockerfile per inizializzare il contenitore
Ad esempio:
FROM centos:latest
RUN useradd myuser
RUN mkdir -p /usr/local/myapp
ADD ./resources/myapp.zip /usr/local/myapp
RUN unzip /usr/local/myapp/myapp.zip
RUN chown -R myuser:myuser /usr/local/myapp
CMD ["/usr/local/myapp/bin/app"]
vs.
FROM centos:latest
ADD ./resources/myapp.zip/
ADD ./resources/setup.sh/
RUN chmod +x /setup.sh
# setup.sh will create the user, extract the zip, execute the binary
CMD ["/setup.sh"]
Grazie! Non avevo considerato il fatto che setup.sh sarebbe stato eseguito ogni volta che avvii un contenitore dall'immagine. Nel mio caso, sarebbe meglio che 'app' fosse parte dell'immagine piuttosto che estratta ogni volta. – Owen
@Owen Questo è lo scopo di 'CMD': https://docs.docker.com/engine/reference/builder/#cmd –