Docker 如何将相对路径作为参数传递

zna*_*nat 19 docker

我想运行这个命令:

docker run docker-mup deploy --config .deploy/mup.js
Run Code Online (Sandbox Code Playgroud)

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

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

我尝试了不同的方法,VOLUME但 VOLUME 似乎相反:它向主机公开了一个容器目录。

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

lar*_*sks 25

我不能使用 -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
Run Code Online (Sandbox Code Playgroud)

这会将目录映射(使用-v ...$PWD/.deploy/data/.deploy您的容器中,将当前工作目录设置为/data(使用-w ...),然后运行deploy --config .deploy/mup.js.

  • 它在我的 MacOS 上运行。对于 Windows,我们必须使用 `%cd%` 而不是 `$PWD`。 (2认同)

Bak*_*ker 11

Windows-Powershell

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

docker run -it --rm -d -p 8080:80 --name web -v ${pwd}:/usr/share/nginx/html nginx
Run Code Online (Sandbox Code Playgroud)

$pwd/.(正斜杠点):

docker run -it --rm -d -p 8080:80 --name web -v $pwd/.:/usr/share/nginx/html nginx
Run Code Online (Sandbox Code Playgroud)

只是$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
Run Code Online (Sandbox Code Playgroud)

在当前位置下安装一个子目录,例如“ site-content”,$pwd/+subdir就可以了:

docker run -it --rm -d -p 8080:80 --name web -v $pwd/site-content:/usr/share/nginx/html nginx
Run Code Online (Sandbox Code Playgroud)

  • 我有点错了。`$PWD` 在 Linux 中应该是大写,否则你会挂载 `/somedir` 而不是 `./somedir` (2认同)