Możesz także zamontować katalog lokalny w obrazie Dockera i umieścić skrypt w swoim .bashrc
. Nie zapominaj, że skrypt musi składać się z funkcji, chyba że chcesz, aby był wykonywany na każdej nowej powłoce. (To jest nieaktualne, zobacz informację o aktualizacji).
Używam tego rozwiązania, aby móc zaktualizować skrypt poza instancją dockera. W ten sposób nie muszę ponownie uruchamiać obrazu, jeśli nastąpią zmiany, po prostu otwieram nową powłokę. (Pozbyłem się ponownego otwierania powłoki - zobacz informację o aktualizacji)
Oto jak wiążesz swój bieżący katalog:
docker run -it -v $PWD:/scripts $my_docker_build /bin/bash
Teraz twój bieżący katalog jest powiązany /scripts
z twoją instancją dockera.
(Nieaktualne) Aby zapisać .bashrc
zmiany, zatwierdź obraz roboczy za pomocą tego polecenia:
docker commit $container_id $my_docker_build
Aktualizacja
Aby rozwiązać problem otwierania nowej powłoki dla każdej zmiany, teraz wykonuję następujące czynności:
W samym dockerfile dodaję RUN echo "/scripts/bashrc" > /root/.bashrc"
. Wewnątrz zshrc
eksportuję katalog skryptów do ścieżki. Katalog scripts zawiera teraz wiele plików zamiast jednego. Teraz mogę bezpośrednio wywoływać wszystkie skrypty bez otwierania powłoki podrzędnej przy każdej zmianie.
BTW, możesz również zdefiniować plik historii poza kontenerem. W ten sposób nie jest już konieczne zatwierdzanie zmiany bash.
WORKDIR
iCMD
?