设想
我正在处理的项目(一个 React 应用程序)用于docker-compose
设置它的后端、网络服务器和前端。我在VSCodedevcontainer
(带有 Typescript 的节点)中工作。
我设置的 Docker 环境中的 Docker 似乎工作正常,我能够启动每个 Docker 容器,但我必须以下列方式调整代码,否则 Docker 无法找到要挂载的指定卷.
设置
首先我需要在我的设置一个远程环境变量devcontainer.json
:
"remoteEnv": {
// the original host directory which is needed for volume mount commands from inside the container (Docker in Docker)
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
}
然后我docker-compose.yaml
像这样使用这个环境变量:
services:
webserver:
build:
context: ./docker
dockerfile: webserver/Dockerfile
image: webserver
container_name: webserver_nginx
ports:
- 8080:80
volumes:
- ${LOCAL_WORKSPACE_FOLDER}/webserver:/etc/nginx/conf.d
- ${LOCAL_WORKSPACE_FOLDER}/build:/var/www/html
restart: unless-stopped
depends_on:
- backend
backend:
...
问题
在我的机器上(以及我的同事也使用 VSCode 的机器上)一切正常。但是我有一些团队成员不使用 VSCode。当我提交调整后的docker-compose.yaml
文件时,他们的设置不再起作用,反之亦然,如果他们再次调整文件以满足他们的需要。
问题
如何确保 Docker compose 在 VSCode 内外工作devcontainers
?
可能的解决方案?
是否可以将环境变量设置为默认值?因为在我的情况下,如果项目未在 a 内打开,则应设置的实际值
devcontainer
只是一个简单的点 (.
)。因为当我echo ${LOCAL_WORKSPACE_FOLDER}
在集成的 VSCode 终端中运行命令时,会打印出正确的路径。所以看起来VSCode只是设置了正常的环境变量?(如果上面的假设是正确的)是否可以编写一个简单的 Bash 脚本
install.sh
来自动设置正确的路径?此脚本只能在项目设置期间运行一次。这个文件看起来怎么样?