/ / Personalizar bash de contêiner de docker - bash, unix, docker

Personalize bash container bash - bash, unix, docker

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 № 1

Nã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