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?

26
demandé sur np20 2016-04-03 20:09:22

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
54
répondu Erik Dannenberg 2018-02-25 15:24:01

créer un alias d'une commande existante, pourrait aussi utiliser ln -s:

ln -s $(which <existing_command>) /usr/bin/<my_command>

4
répondu Laurent Magnin 2017-07-11 18:47:10

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

1
répondu mikoop 2018-07-19 02:09:42

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é)

0
répondu Thomas Decaux 2016-07-29 10:36:49
  1. éditer le fichier ~/.bash_aliases vi ~/.bash_aliases
  2. source ce fichier ~/.bash_aliases source ~/.bash_aliases
  3. terminé.
0
répondu Eddy Ferreira 2018-05-04 13:32:15

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.

0
répondu Sonique 2018-07-17 22:20:35