3

我正在尝试从不是已安装的文件夹中lein run执行Clojure Docker 映像/,但是当我尝试cd进入文件夹时,Docker 抱怨unable to locate cd

docker run -v /root/chortles:/test -i jphackworth/docker-clojure cd /test && lein run
=> Unable to locate cd

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

4

3 回答 3

8

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

docker run -w /test -v /root/chortles:/test -i jphackworth/docker-clojure lein run
于 2014-02-22T21:09:29.107 回答
0

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

有一个名为 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
于 2014-02-22T11:41:23.303 回答
0

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

于 2014-02-22T23:11:49.457 回答