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

时间:2016-05-17 16:17:25

标签: 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:jessie bash
docker run -it -v $(PWD):/app -e PATH='\$PATH:/app/bin' debian:jessie bash

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

4 个答案:

答案 0 :(得分:10)

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

你可以这样做:

library(dplyr)
left_join(df1, df2, by = 'term') %>%
       mutate(freq = replace(freq, is.na(freq), 0)

答案 1 :(得分:5)

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

答案 2 :(得分:2)

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

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

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

构建修改后的Docker

现在,您可以访问< 下的所有应用您安装到" / app "的外部目录> / bin 通过

-v <external Directory>:/app

答案 3 :(得分:1)

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

#/bin/bash

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

并从docker调用它:

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