在运行Docker容器时,如何附加到PATH环境变量?

在运行Docker容器时,如何附加到PATH环境变量?,docker,Docker,我想装载一个卷并将其添加到容器的PATH环境变量中。我试过以下方法,但没有一种有效 docker run -it -v $(PWD):/app -e PATH=$PATH:/app/bin debian:jessie bash docker run -it -v $(PWD):/app -e PATH='$PATH:/app/bin' debian:jessie bash docker run -it -v $(PWD):/app -e PATH='$$PATH:/app/bin' debian

我想装载一个卷并将其添加到容器的PATH环境变量中。我试过以下方法,但没有一种有效

docker run -it -v $(PWD):/app -e PATH=$PATH:/app/bin debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='$PATH:/app/bin' debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='$$PATH:/app/bin' debian:jessie bash
docker run -it -v $(PWD):/app -e PATH='\$PATH:/app/bin' debian:jessie bash

如何将装入的卷附加到PATH?

在docker命令行中,您无法获得“运行时$PATH的值是多少”。因此,不能使用docker的
-e
标志将路径附加到PATH变量。要实现您想要做的事情,您需要在脚本中执行该操作,该脚本将作为容器的cmd/entrypoint执行。

如果使用-e选项,$PATH值是主机的路径,而不是容器的路径

您可以这样做:

docker run -it -v $(PWD):/app debian:jessie bash -c 'export PATH=$PATH:/app/bin; bash'

您可以为导入的应用定义固定路径,并将应用的新路径添加到环境变量“Path”中

让我们走你的路“/app”。在Dockerfile中添加以下行:

ENV PATH=${PATH}:/app/bin
构建修改后的Docker

现在,您可以访问位于/bin下的所有应用程序,这些应用程序通过

-v:/app

您可以使用shell脚本(我们称之为run.sh):

#/bin/bash
路径=$PATH:/app/bin
"$@"
从docker那叫它:

docker run -it -v $(PWD):/app debian:jessie /app/run.sh bash

这几乎奏效了。除非我必须用单引号替换双引号,否则它将使用主机的路径而不是容器的路径。Docker run-c现在是--cpu共享int cpu共享(相对权重),而从技术上讲,不能附加
-e
标志是正确的,@KiwenLau在上面提供了一个有效的解决方案。
docker run -it -v $(PWD):/app debian:jessie /app/run.sh bash