我有一个devcontainer组合项目,需要mongo和一个副本服务器。这需要运行一些mongosh命令,我想在一个单独的容器中作为bash脚本执行这些命令。
我的问题是,当使用"克隆存储库到容器卷"时;我的挂载目录为空。当我首先在本地检查repo,然后从中构建容器时,这工作得很好。
下面是一个演示库,显示了这个问题:
https://github.com/jrj2211/vscode-remote-try-node-mongo-compose
在这个项目中,撰写文件挂载了.devcontainer目录。我需要的文件在路径:.devcontainer/scripts/mongosetup.sh。
volumes:
- ./scripts:/scripts
这会在本地产生正确的结果,但是在docker卷中该文件夹是空的。
到WSL2卷中文件夹位置的正确路径是什么?是否有一种方法可以使此工作在本地和克隆在docker卷?
我试图从devcontainer设置一个ENV变量。json指向${workspaceFolder},但在compose.
中以空字符串结束。这个文档让我相信这应该是这样工作的,从第二个链接,谈到"克隆库在容器卷">
https://code.visualstudio.com/remote/advancedcontainers/add-local-file-mount
https://code.visualstudio.com/remote/advancedcontainers/improve-performance
我能够通过使用@h4l辉煌的代码得到这个工作。这将获取containerWorkspaceFolder和localWorkspaceFolder,并将它们转换为docker-compose中可用的环境变量。这样做的额外好处是可以继续在本地或容器中工作。
https://github.com/h4l/dev-container-docker-compose-volume-or-bind
希望这些变量很快就可以在容器模式下直接使用,这样就不需要额外的脚本了。