[英]docker-compose: how to use minio in- and outside of the docker network
[英]How to mount volumes with docker-compose in- and outside of a VSCode devcontainer?
我正在处理的项目(一个 React 应用程序)使用docker-compose
来设置它的后端、网络服务器和前端。 我在VSCode devcontainer
(带有 Typescript 的节点)中工作。
The Docker in Docker environment I've setup seems to work fine and I'm able to start each of the Docker containers but I had to adapt the code in the following manner because otherwise Docker wasn't able to locate the specified volumes to mount .
首先,我需要在我的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
?
是否可以将环境变量设置为默认值? 因为在我的情况下,如果项目没有在devcontainer
中打开,则应该设置的实际值只是一个简单的点( .
)。 因为当我在集成的 VSCode 终端中运行命令echo ${LOCAL_WORKSPACE_FOLDER}
时,会打印出正确的路径。 所以看起来VSCode只是设置了正常的环境变量?
(如果上面的假设是正确的)是否可以编写一个简单的 Bash 脚本install.sh
自动设置正确的路径? 此脚本只能在项目设置期间运行一次。 这个文件看起来怎么样?
Docker 组合允许变量的默认值:
如果 VARIABLE 在环境中未设置或为空,则 ${VARIABLE:-default} 评估为默认值。
请参阅: https://docs.docker.com/compose/environment-variables/
对于您的案例示例,您可以使用:
${LOCAL_WORKSPACE_FOLDER:-.}
PS:我从来没有使用过那个personnaly
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.