我想运行以下命令:
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管道中的构建步骤,据我了解,它只是按原样运行。
答案 0 :(得分:3)
如果您在要绑定挂载的目录,请使用${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
。