Você também pode montar um diretório local na imagem do docker e originar o script no seu .bashrc
. Não se esqueça de que o script deve consistir em funções, a menos que você queira que ele seja executado em cada novo shell. (Isto está desatualizado, consulte o aviso de atualização.)
Estou usando esta solução para poder atualizar o script fora da instância do docker. Dessa forma, não preciso executar a imagem novamente se ocorrerem alterações, apenas abro um novo shell. (Livre-se de reabrir um shell - consulte o aviso de atualização)
Aqui está como você vincula seu diretório atual:
docker run -it -v $PWD:/scripts $my_docker_build /bin/bash
Agora seu diretório atual está vinculado à /scripts
sua instância do docker.
(Desatualizado) Para salvar suas .bashrc
alterações, envie sua imagem de trabalho com este comando:
docker commit $container_id $my_docker_build
Atualizar
Para resolver o problema de abrir um novo shell para cada mudança, agora faço o seguinte:
No próprio dockerfile, acrescento RUN echo "/scripts/bashrc" > /root/.bashrc"
. Dentro zshrc
, exporto o diretório de scripts para o caminho. O diretório de scripts agora contém vários arquivos em vez de um. Agora posso chamar diretamente todos os scripts sem ter que abrir um sub shell em cada mudança.
BTW, você também pode definir o arquivo de histórico fora do seu contêiner. Dessa forma, não é mais necessário se comprometer com uma mudança de bash.
WORKDIR
eCMD
?