run - ¿Cómo establecer los alias de bash para contenedores docker en Dockerfile?
docker test connection between containers (6)
Soy nuevo en docker. Encontré que podemos establecer variables de entorno usando la instrucción ENV en el Dockerfile. Pero, ¿cómo se configuran los alias de bash para comandos largos en Dockerfile?
- edite este archivo ~ / .bash_aliases
vi ~/.bash_aliases
- fuente este archivo ~ / .bash_aliases
source ~/.bash_aliases
- hecho.
Acabo de agregar esto a mi app.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"
y dentro del initbash_profile.sh
que solo agrega mis alias personalizados y no es necesario buscar el archivo .bashrc.
# add the bash aliases
cat /usr/sbin/bashrc_alias.sh >> ~/.bashrc
trabajó un regalo!
Otra opción es utilizar el "comando docker exec -it" desde fuera del contenedor y usar su propio .bashrc o el .bash_profile (lo que prefiera)
p.ej. docker exec -it docker_app_1 bash
Para crear un alias de un comando existente, también puede usar ln -s
:
ln -s $(which <existing_command>) /usr/bin/<my_command>
Puede usar el punto de entrada, pero no funcionará para el alias, en su Dockerfile:
ADD dev/entrypoint.sh /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
Su punto de entrypoint.sh
#!/bin/bash
set -e
function dev_run()
{
}
export -f dev_run
exec "$@"
(Copia rápida / pegar, lo siento)
Si desea usar alias solo en Dockerfile, pero no dentro del contenedor, la forma más corta es la declaración ENV
:
ENV update=''apt-get update -qq''
ENV install=''apt-get install -qq''
RUN $update && $install apt-utils /
curl /
gnupg /
python3.6
Y para su uso en contenedor de la manera descrita anteriormente:
RUN printf ''#!/bin/bash /n $(which apt-get) install -qq $@'' > /usr/bin/install
RUN chmod +x /usr/bin/install
La mayoría de las veces utilizo alias solo en la etapa de construcción y no voy dentro de los contenedores, por lo que el primer ejemplo es más rápido, más claro y más simple para el uso diario.
Básicamente como siempre lo haces, agregándolo a .bashrc
del usuario:
FROM foo
RUN echo ''alias hi="echo hello"'' >> ~/.bashrc
Como es habitual, esto solo funcionará para shells interactivos:
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
Para shells no interactivos, debe crear un pequeño script y ponerlo en su ruta, es decir:
RUN echo -e ''#!/bin/bash/necho hello'' > /usr/bin/hi && /
chmod +x /usr/bin/hi
Si su alias usa parámetros (es decir, hi Jim
-> hello Jim
), simplemente agregue "$@"
:
RUN echo -e ''#!/bin/bash/necho hello "$@"'' > /usr/bin/hi && /
chmod +x /usr/bin/hi