在卷的帮助下将文件夹作为参数传递给 Docker 容器

Passing folder as argument to a Docker container with the help of volumes

我有一个 python 脚本,它有两个参数 -input 和 -output,它们都是目录路径。我想首先知道这是否是 docker 的推荐用例,我还想知道如何通过指定自定义输入和输出文件夹来 运行 docker 容器docker 卷的帮助。 我的 post 与此类似:Passing file as argument to Docker container。 还是没能解决问题。

通常的做法是使用卷来保存数据或装载一些输入数据。例如,参见 postgres 图片。

docker run -d \
  --name some-postgres \
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v /custom/mount:/var/lib/postgresql/data \
  postgres

您可以看到如何通过 env var 设置数据目录的路径,然后在该路径上安装一个卷。所以产生的数据最终会在卷中。

您还可以在文档中看到有一个目录 /docker-entrypoint-initdb.d/,您可以在其中安装输入脚本,运行 在第一个数据库设置中。

在你的情况下,它可能看起来像这样。

docker run  \
  -v "$PWD/input:/app/input" \
  -v "$PWD/output:/app/output"  \
  myapp --input /app/input --output /app/output 

或者您对两者使用相同的音量。

docker run  \
  -v "$PWD/data:/app/data" \
  myapp --input /app/data/input --output /app/data/output