如何在 docker-compose 中挂载单个文件

mol*_*hui 5 docker docker-compose

我有一个项目需要将单个目录挂载到docker容器中,我以类似的方式挂载

\n
agent:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0image:\xc2\xa0agent:latest\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0container_name:\xc2\xa0agent\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0volumes:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0-\xc2\xa0$PWD/status.txt:/status.txt\n
Run Code Online (Sandbox Code Playgroud)\n

Is A Directory在 mode 下修改 status.txt 时出现错误open

\n
with open('status.txt','a') as f:\n    ...\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n

docker-compose 似乎将文件识别为目录

\n

如果您能告诉我如何解决它,我将不胜感激?

\n

Nag*_*gev 0

尽管我使用相对路径,但我可以使用相同的语法很好地挂载文件,例如:

volumes:
 - ./sourcedir/file.txt:/target/dir/mountedfile.txt
Run Code Online (Sandbox Code Playgroud)

mountedfile.txt本质上是哪里file.txt。您的环境中一定还有其他原因导致此问题。要排除故障,您可以执行以下操作,包括:

  1. 将 shell 放入容器中并stat在目标文件上运行,例如stat mountedfile.txt. 这应该告诉您它是文件还是目录。

  2. 使用普通 docker 手动测试您的配置,用于-v安装卷,例如:

docker run --rm -ti -v /sourcedir/file.txt:/target/mountedfile.txt ubuntu:latest bash
Run Code Online (Sandbox Code Playgroud)

另外,(有些)不相关的答案中可能有一些有用的信息。