Я новичок в докере. Я обнаружил, что мы можем установить переменные среды, используя команду ENV в файле Docker. Но как установить bash псевдонимы для длинных команд в Dockerfile?
Как установить алиасы bash для контейнеров докеров в файле Docker?
Ответ 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 Jim
→ hello 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]"
(Быстрая копия/вставка, извините)