Docker如何通过相对路径作为参数

时间:2018-07-12 18:28:13

标签: docker

我想运行以下命令:

docker run docker-mup deploy --config .deploy/mup.js

其中docker-mup是图像的名称,而deploy--config.deploy/mup.js是参数

我的问题:如何装入一个卷,以使.deploy/mup.js被理解为主机上运行docker run命令的相对路径?

我用VOLUME尝试了不同的方法,但似乎VOLUME恰恰相反:它将容器目录公开给主机。

我不能使用-v,因为此容器将用作CI / CD管道中的构建步骤,据我了解,它只是按原样运行。

2 个答案:

答案 0 :(得分:3)

Windows - Powershell

如果您要绑定挂载的目录,请使用${pwd}

docker run -it --rm -d -p 8080:80 --name web -v ${pwd}:/usr/share/nginx/html nginx

$pwd/.(正斜杠点):

docker run -it --rm -d -p 8080:80 --name web -v $pwd/.:/usr/share/nginx/html nginx

只要 $pwd 就会导致错误:

docker run -it --rm -d -p 8080:80 --name web -v $pwd:/usr/share/nginx/html nginx

Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to
delimit the name

在当前位置下安装子目录,例如“site-content”,$pwd/ + subdir 很好:

docker run -it --rm -d -p 8080:80 --name web -v $pwd/site-content:/usr/share/nginx/html nginx

答案 1 :(得分:0)

  

我不能使用-v,因为此容器将用作CI / CD管道中的构建步骤,据我了解,它只是按原样运行。

使用-v公开当前目录是在容器中创建.deploy/mup.js文件的唯一方法,除非您在自己的容器中使用COPY指令将其烘烤到映像本身中Dockerfile

使用-v选项映射主机目录可能看起来像这样:

docker run -v $PWD/.deploy:/data/.deploy -w /data docker-mup deploy --config .deploy/mup.js

这会将$PWD/.deploy目录映射到容器中的/data/.deploy上,将当前工作目录设置为/data,然后运行deploy --config .deploy/mup.js