docker - 将文件作为参数传递给 docker run
问题描述
我有一个 python3 命令行脚本,它使用 argparse 来读取参数并给出结果。当我从终端运行时它工作正常:
my_cli --input input.csv --output output.csv --number 8
我成功地将其 dockerized 并尝试运行为:
docker run --mount type=bind,source=/tmp/path,target=/app my_cli_container --input input.csv --output output.csv --number 8
我得到: FileNotFoundError:[Errno 2] 没有这样的文件或目录:input.csv
我在这里做错了什么?为什么容器看不到输入文件?我是否需要做一些额外的事情来读取这个输入文件和数字,然后将输出写入文件?
谢谢你。
解决方案
这将取决于input.csv
容器内部和外部的位置以及容器中的工作 DIR。
您正在通过但位于容器外部的文件夹/tmp/path
中如果没有,则容器将无法访问该文件/app
input.csv
/tmp/path
如果是,那么容器内的工作目录是/app
什么?否则你需要通过--input /app/input.csv
另请注意,由容器(out.csv)写入的任何文件都将以容器中的用户(可能是 root)的身份写入,因此您的用户可能无法读取
推荐阅读
- ruby - 基于匹配键的Ruby组散列并将不匹配键的值存储在数组中
- r - Rotate Lines To True North or Vertical
- c# - 类的新实例中的属性和先前创建的同一类实例中的属性被引用相同的内存
- html - 为什么 CSS 文件不会改变 Django 项目中 HTML 标签的颜色?
- php - 如何检查订单商品是否有元字段“延期交货”?
- java - AnimatedVectorDrawable 抛出 UnsupportedOperationException
- c++ - 实现模板类 Stack1
- php - /^a|b|c$/ 和 /^a$|^b$|^c$/ 之间的预置差异
- mysql - 如何将 SQL 查询转换为 JSON 格式
- python - 如何在给定字符串名称的情况下导入文件?