在挂载的文件夹中运行Docker镜像命令
我试图执行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在运行我的命令之前更改目录?
你可以使用-w
param来docker run
。 该参数对于在容器中指定工作目录很有用。
docker run -w /test -v /root/chortles:/test -i jphackworth/docker-clojure lein run
最好的select是给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
cd
是一个bash内build的 ,而不是一个命令。 你可以使用bash -c 'cd /test && lein run'
。 更好的是,像@Jiri一样,使用-w
参数来设置容器的工作目录,然后使用lein run
来启动你的应用程序。