Tento definir uma configuração personalizada para o prompt do bash do contêiner do Docker para exibir o nome da ramificação git quando conectado.
Encontrei tudo para fazê-lo corretamente, mas não consigo executar o ~/.profile
ou até mesmo ~/.bash_profile
arquivos no prédio do contêiner.
Se eu executar source ~/.profile
manualmente dentro do contêiner, ele funciona bem. Mas não quero que meus usuários digitem nenhum comando para ativar o prompt personalizado.
Eu tentei colocar RUN /bin/bash -c "source /root/.profile"
ou RUN source /root/.profile
no meu Dockerfile, source /root/.profile
no meu entrypoint.sh
arquivo sem sucesso.
Vi algumas soluções ao executar docker run
, mas estou usando o docker-compose.
Obrigado a todos, se você tiver algum conselho: D!
Respostas:
1 para resposta № 1Não tenho certeza de que usar o arquivo de configuração ~ / .profile seja a melhor maneira de fazer o que você deseja. RUN source /root/.profile
não terá nenhum efeito, pois a linha será executada apenas uma vez e não será persistente ao tentar executar o binário bash dentro do contêiner. (Ele realmente executará uma nova sessão do bash).
Então .. primeiro de tudo, o tipo de configuração que você está tentando fazer deve estar no arquivo .bashrc (apenas porque é o local em que geralmente aparece).
Então, como a página de manual do bash diz:
Quando o bash é chamado como um logon interativocasca, ou como shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura ~ / .bash_profile, ~ / .bash_login, e ~ / .profile, nessa ordem
E:
Quando um shell interativo que não é um shell de login é iniciado, o bash lê e executa comandos de /etc/bash.bashrc e ~ / .bashrc, se esses arquivos existem.
O que você provavelmente deve fazer:
No Dockerfile:
COPY config/.bashrc /root/.bashrc
O arquivo .bashrc que você deseja copiar para o contêiner está localizado em um repositório de configuração. É aqui que você deve colocar sua configuração.
Então, no ponto de entrada:
exec "$@"
Em seguida, você pode executar o bash usando o comando docker:
docker run XXX /bin/bash