VS Code Dev Container docker compose 将文件挂载为目录?

10 浏览
0 Comments

VS Code Dev Container docker compose 将文件挂载为目录?

我正在设置一个使用docker-compose的vscode开发容器。我需要在mongo中初始化一个副本集,该副本集使用一个需要bash脚本的第二个设置容器。

我的目录结构是:

.devcontainer

scripts

mongosetup.sh

然后,我将scripts目录挂载到我的容器中:

mongodb-setup:

image: mongo

volumes:

- ./scripts:/scripts

command: "ls -la /scripts"

depends_on:

- mongodb

检查此容器的输出后,ls -la /scripts命令显示mongosetup.sh已被变成了文件夹,因此无法运行它...

总共 4

drwxr-xr-x 3 root root 60 Jun 14 02:29 .

drwxr-xr-x 1 root root 4096 Jun 14 03:25 ..

drwxr-xr-x 2 root root 40 Jun 14 02:29 mongosetup.sh

我尝试只挂载文件和卷为".scripts:/scripts"。

我应该注意的是,只有在使用"在容器卷中克隆存储库"时才会发生这种情况。如果我将存储库克隆到我的计算机上,然后在VS Code中打开并从那里构建它,则可以正常工作。

我的devcontainer已设置为进入我的mongodb镜像。它可以访问/workspaces/REPONAME目录中的文件,如果我在那里检查它,该文件不是文件夹。

0
0 Comments

问题出现的原因是文件未找到,因此Docker自动将其创建为目录。之前我尝试只挂载该位置的文件本身,所以Docker创建了该目录。当它不起作用时,我将挂载点更改为其上一级目录,导致该文件夹仍然存在,使我感到困惑。

解决方法:目前还没有找到解决方法。我只是使用健康检查来初始化Mongo复制服务器,但我仍然不喜欢这个解决方案。希望有一天微软能改进devcontainers中的Docker卷支持。

0