扩展Docker Compose

未匹配的标注

引用一个现成的基于部署或非部署的 docker-compose.yml 文件有一些潜在缺点。

比如:

1、如果某个容器的入口关闭的话,Docker Compose 会关闭这个容器。如果你要做调试,并反复重启的话,这样会很麻烦。

2、你可能会想要把本地文件系统映射到容器中,或者是暴露端口给其它资源,比如想要访问数据库。

3、你可能会想要把本地 .ssh 文件夹的内容拷贝进容器,或者是设置 ptrace 选项。见 《一起学Docker20:打造自己的 Docker 开发容器之 Docker Compose》一文。

你可以通过多个 docker-compose.yml 文件来覆盖或补充最基础的 yml 文件,来扩展完整的 Docker Compose 配置,以解决这些问题。

比如,有这样一个额外的 yml 文件 —— .devcontainer/docker-compose.extend.yml 文件:

如果需要的话,这个文件还可以提供额外的设置,比如端口映射等。怎么使用它呢?按照顺序,在 devcontainer.json 中引用原来的 docker-compose.yml 文件和 .devcontainer/devcontainer.extend.yml 文件。

之后,在启动容器的时候,VS Code 就会自动使用这2个文件了。你也可以自己从命令行启动它们:

尽管 postCreateCommand 属性能够让你在容器内部安装额外的工具,有时候你可能想要一个专门的 Dockerfile 用于开发。你也可以使用同样的方式,来引用一个专门用于开发的自定义 Dockerfile 而不修改现有的 Docker Compose 文件。比如,你可以像这样更新 .devcontainer/devcontainer.extend.yml :

彩蛋:在 Docker Compose 中使用 localhost

和 Docker 文档所说的一样,你也可以往 docker-compose.yml 文件中添加其它服务。不过,如果你想要新加的服务中运行的东西,能够被 localhost 上的容器访问到,或者想要本地转发服务的话,需要确保在服务配置中加入了以下红框内容:

矻矻划重点:

1、卷绑定是根据 devcontainer.json 中,dockerComposeFile 属性列表的第一个文件位置确定的。

2、Rust 需要用到 ptrace 调试器,所以要做额外配置。

如果喜欢这篇文章,欢迎长按点赞支持!另外,记得关注,下期更加精彩。我们下期,不见不散。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
秦晓武
讨论数量: 0
发起讨论 只看当前版本


暂无话题~