Comment configurer les alias bash pour les conteneurs docker dans Dockerfile?
je suis nouveau à docker. J'ai trouvé que nous pouvons définir des variables d'environnement en utilisant L'instruction ENV dans le fichier Dockerfile. Mais comment définir des alias bash pour de longues commandes dans Dockerfile?
6 réponses
Fondamentalement, comme vous le faites toujours, par l'ajout de l'utilisateur .bashrc
:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
Comme d'habitude, cela ne fonctionne que pour shell interactif:
docker build -t test .
docker run -it --rm --entrypoint /bin/bash test hi
/bin/bash: hi: No such file or directory
docker run -it --rm test bash
$ hi
hello
pour les shells non interactifs vous devez créer un petit script et le mettre dans votre chemin, i.e.:
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
si votre alias utilise des paramètres(i.e. hi Jim
-> hello Jim
), il suffit d'ajouter "$@"
:
RUN echo -e '#!/bin/bash\necho hello "$@"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
créer un alias d'une commande existante, pourrait aussi utiliser ln -s
:
ln -s $(which <existing_command>) /usr/bin/<my_command>
je viens d'ajouter à mon application.dockerfile
# setup aliases
ADD ./bashrc_alias.sh /usr/sbin/bashrc_alias.sh
ADD ./initbash_profile.sh /usr/sbin/initbash_profile
RUN chmod +x /usr/sbin/initbash_profile
RUN /bin/bash -C "/usr/sbin/initbash_profile"
et dans le initbash_profile.sh
qui ajoute juste mes alias personnalisés et pas besoin de source .dossier bashrc.
# add the bash aliases
cat /usr/sbin/bashrc_alias.sh >> ~/.bashrc
travaillé un régal!
une autre option est d'utiliser la commande "docker exec-it" de l'extérieur du conteneur et d'utiliser la vôtre .bashrc ou .bash_profile (ce que jamais vous préférez)
par exemple. docker exec -it docker_app_1 bash
Vous pouvez utiliser le point d'entrée, mais il ne fonctionnera pas pour les alias, dans votre Dockerfile:
ADD dev/entrypoint.sh /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
entrypoint.sh
#!/bin/bash
set -e
function dev_run()
{
}
export -f dev_run
exec "$@"
(Rapide copier/coller, désolé)
- éditer le fichier ~/.bash_aliases
vi ~/.bash_aliases
- source ce fichier ~/.bash_aliases
source ~/.bash_aliases
- terminé.
si vous voulez utiliser des alias juste dans Dockerfile, mais pas à l'intérieur du conteneur, alors le chemin le plus court est ENV
déclaration:
ENV update='apt-get update -qq'
ENV install='apt-get install -qq'
RUN $update && $install apt-utils \
curl \
gnupg \
python3.6
et pour une utilisation en conteneur comme déjà décrit:
RUN printf '#!/bin/bash \n $(which apt-get) install -qq $@' > /usr/bin/install
RUN chmod +x /usr/bin/install
la plupart du temps, j'utilise des alias juste sur la scène de la construction et ne pas aller à l'intérieur des conteneurs, de sorte que le premier exemple est plus rapide, plus clair et plus simple pour chaque utilisation quotidienne.