我正在尝试从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在运行命令之前更改目录?
答案 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)
cd
是bash builtin,而不是命令。您可以使用bash -c 'cd /test && lein run'
。更好的是,按@Jiri说明并使用-w
参数设置容器的工作目录,然后使用lein run
启动您的应用。