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

l3zydbqr  于 2023-03-22  发布在  Docker
关注(0)|答案(4)|浏览(662)

我想挂载一个卷并将其添加到容器的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?

d4so4syb

d4so4syb1#

如果使用-e选项,则$PATH值是主机的PATH,而不是容器的PATH。
你可以这样做:

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

kq0g1dla2#

在docker命令行中,你不能得到“运行时$PATH的值是什么”。因此,你不能用docker的-e标志将PATH附加到PATH变量。为了实现你想要做的事情,你需要在一个脚本中这样做,该脚本将作为容器的cmd / entrypoint执行。

11dmarpk

11dmarpk3#

您可以为导入的App定义一个固定的Path,并将新的Path添加到环境变量“Path”中
让我们以路径“/app”为例。在Dockerfile中添加以下行:

ENV PATH=${PATH}:/app/bin

构建修改后的Docker
现在,您可以通过以下方式访问所有位于**〈external Directory〉/bin下并挂载到“/app**”的应用

-v <external Directory>:/app
qcbq4gxm

qcbq4gxm4#

你可以使用一个shell脚本(我们称之为 * run.sh *):

#!/bin/sh -l

PATH=$PATH:/app/bin
"$@"

然后从docker调用它:

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

相关问题