Puoi anche montare una directory locale nell'immagine docker e generare lo script nel tuo file .bashrc
. Non dimenticare che lo script deve essere composto da funzioni a meno che tu non voglia che venga eseguito su ogni nuova shell. (Questo è obsoleto, vedere l'avviso di aggiornamento.)
Sto usando questa soluzione per poter aggiornare lo script al di fuori dell'istanza docker. In questo modo non devo rieseguire l'immagine in caso di modifiche, apro solo una nuova shell. (Mi sono sbarazzato della riapertura di una shell - vedi l'avviso di aggiornamento)
Ecco come associare la directory corrente:
docker run -it -v $PWD:/scripts $my_docker_build /bin/bash
Ora la tua directory corrente è associata alla /scripts
tua istanza docker.
(Non aggiornato) Per salvare le .bashrc
modifiche, eseguire il commit dell'immagine di lavoro con questo comando:
docker commit $container_id $my_docker_build
Aggiornare
Per risolvere il problema di aprire una nuova shell per ogni modifica ora faccio quanto segue:
Nello stesso dockerfile aggiungo RUN echo "/scripts/bashrc" > /root/.bashrc"
. All'interno zshrc
esporto la directory degli script nel percorso. La directory degli script ora contiene più file invece di uno. Ora posso chiamare direttamente tutti gli script senza dover aprire una sub shell ad ogni modifica.
BTW puoi anche definire il file della cronologia al di fuori del tuo contenitore. In questo modo non è più necessario eseguire il commit su una modifica bash.
WORKDIR
eCMD
?