Dav*_*ter 7 bash alias container docker
我有一个 bash 别名加载到 Docker 容器中,在/etc/bash.bashrc
. 它用作命令行 PHP 脚本的快捷方式。这很方便,因为任何人都可以在登录容器后直接使用该别名,如下所示:
$ docker exec -it my-container bash
但是,我还希望能够在不登录的情况下在一次性命令中使用此别名,例如:
$ docker exec -it my-container my-alias
我尝试了不同的变体,例如在 以外的其他地方定义别名/etc/bash.bashrc
,但我一直遇到这个错误:
rpc 错误:code = 2 desc = oci 运行时错误:exec 失败:exec:“my-alias”:在 $PATH 中找不到可执行文件
到目前为止,我在网上找到的其他建议并没有奏效。任何人?
它不是由于别名旨在交互使用而造成的限制。您可能可以解决这个问题,但迄今为止最简单的解决方案是简单地将您的“别名”放入脚本并将其放入/bin
.
文件
RUN echo '#! /bin/sh' >> /bin/mycommand
RUN echo 'echo "running mycommand!"' >> /bin/mycommand
RUN chmod u+x /bin/mycommand
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作
docker exec -it f3a34 mycommand # => running mycommand!
Run Code Online (Sandbox Code Playgroud)
最终我采取了稍微不同的方法,因为我还没有设法让它与bash.bashrc
策略一起工作。@joat 是对的,别名可能是与命令行的部分执行(使用docker exec
)的不幸组合。
最后,我将一个脚本(在我的例子中是通过 PHP Composer)注入到图像中。就我而言,通过安装本地目录,尽管这并不重要。Dockerfile
然后我通过环境变量添加此脚本的路径:
ENV PATH $PATH:./vendor/bin
这使得脚本在运行时全局可用。
我确实认为这是一种解决方法,但我很想听听那些真正在运行时使用常规别名的人的意见docker exec
。
归档时间: |
|
查看次数: |
9755 次 |
最近记录: |