在docker-compose.yml中将文件作为参数传递



我正在使用以下命令运行docker容器

docker run -d -v /root/myapp/solution/dataFile:/myapp/data -p 1080:1081 8cb989ef80b5

dataFile包含容器成功运行所需的一些数据。接下来,我试图使用docker-compose来启动带有以下docker-compose.yaml文件的容器

version: "3.7"
services:
myapp:
image: myserver/myapp:latest
ports:
- "1080:1081"
volumes:
- /root/myapp/solution/dataFile:/myapp/data

但当我运行docker-compose命令时,它失败了,出现以下错误

myapp_1  | 2021/12/07 11:58:37 error while reading the file "/myapp/data": read /myapp/data: is a directory
$ ls -l
total 0
drwxr-xr-x    3 root     root            15 Dec  7 11:49 dataFile
[node1] (local) root@192.168.0.18 ~/myapp/solution
$ pwd
/root/myapp/solution

在检查内容时,我可以看到dataFile是在一个目录中创建的,因此脚本失败了。如何将参数作为文件传递,以便docker-compose成功。

由于我们缺乏关于容器、运行以及它实际尝试做什么的信息,我们必须做出一些假设。其中一个假设是/myapp/data";应该是一个文件,但您指定了一个目录作为卷。所以/root/myapp/solution/dataFile是一个目录中的时间,容器正在运行。如果事先不存在dataFile,则默认情况下会将其创建为目录,因此,在将其作为卷添加到容器之前,应先将其作为文件创建。

通常,如果在运行容器之前卷不存在,那么将卷链接到文件并没有多大意义。它应该出现在容器中,或者出现在您的文件系统中。在这种情况下,可能两者都不是。

如果您添加了有关容器详细信息的更多信息,这可能有助于获得更精确的答案。我会相应地修改我的答案。

最新更新