Подтвердить что ты не робот

Как установить алиасы bash для контейнеров докеров в файле Docker?

Я новичок в докере. Я обнаружил, что мы можем установить переменные среды, используя команду ENV в файле Docker. Но как установить bash псевдонимы для длинных команд в Dockerfile?

4b9b3361

Ответ 1

В принципе, как и всегда, добавив его пользователям .bashrc:

FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc

Как обычно, это будет работать только для интерактивных оболочек:

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

Для неинтерактивных оболочек вы должны создать небольшой script и поместить его в свой путь, то есть:

RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
    chmod +x /usr/bin/hi

Если ваш псевдоним использует параметры (т.е. hi Jimhello Jim), просто добавьте $*:

RUN echo -e '#!/bin/bash\necho hello $*' > /usr/bin/hi && \
    chmod +x /usr/bin/hi

Ответ 2

Чтобы создать псевдоним существующей команды, также можно использовать ln -s:

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

Ответ 3

Вы можете использовать точку входа, но она не будет работать для псевдонима в вашем файле Docker:

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 "[email protected]"

(Быстрая копия/вставка, извините)