在已安装的文件夹中运行Docker镜像命令

时间:2014-02-22 10:45:34

标签: clojure leiningen docker ubuntu-13.04

我正在尝试从lein run的已装入文件夹中/执行cd,但当我尝试将unable to locate cd放入文件夹时,Docker会抱怨与docker run -v /root/chortles:/test -i jphackworth/docker-clojure cd /test && lein run => Unable to locate cd

{{1}}

如何指示Leiningen在不同的文件夹中运行,或者告诉Docker在运行命令之前更改目录?

3 个答案:

答案 0 :(得分:7)

您可以将-w参数用于docker run。此参数对于指定容器内的工作目录非常有用。

docker run -w /test -v /root/chortles:/test -i jphackworth/docker-clojure lein run

答案 1 :(得分:0)

最好的办法是将一个shell脚本添加到docker镜像并调用它。

有一个名为lein-wrapper.sh的脚本,安装在/ usr / local / bin中。脚本应该为leiningen整理环境,然后调用它。像这样:

#!/bin/sh
export PATH=${LEININGEN_INSTALL}:${PATH}
cd /test
lein $@

您可以设置

ENTRYPOINT["/usr/local/bin/lein-wrapper.sh"]

Dockerfile

并将其调用为:

# Will call /usr/local/bin/lein-wrapper.sh run 
# which will call lein run   
docker run -v /root/chortles:/test -i jphackworth/docker-clojure run

# or run lein deps...
docker run -v /root/chortles:/test -i jphackworth/docker-clojure deps

答案 2 :(得分:0)

cdbash builtin,而不是命令。您可以使用bash -c 'cd /test && lein run'。更好的是,按@Jiri说明并使用-w参数设置容器的工作目录,然后使用lein run启动您的应用。