DevContainer
什么是 DevContainer
DevContainer 是一个用户支撑开发、调试某个特定微服务组件的基础环境,此环境被封装成一个容器,内常含有开发该微服务组件的全套 SDK,开发调试工具,以及其他辅助工具。 在服务的工作负载被切换到 DevMode 的时候,Nocalhost 会使用 DevContainer 替换原本工作负载的容器。
如何配置 DevContainer
在 Nocalhost 的配置文件中,给对应的 service 添加 devContainerImage 字段即可。
在 Nocalhost 控制 Pod 进入 DevMode 的时候,设置的 devContainerImage 会被启动成为 DevContainer 替代原本的容器。之后,开发者可以在 DevContainer 中构建,运行,调试自己的程序了。
Nocalhost 会将 DevContainer 的启动命令覆盖为 /bin/sh -c tail -f /dev/null
以确保 DevContainer 不会意外退出。关于 DevMode 下,Nocalhost 做的其他变动,请查看:DevMode
Nocalhost 提供的 DevContainer Image
https://github.com/nocalhost/dev-container
关于 DevContainer Image 制作的建议
你可以使用任何 Docker Image 来作为 DevContainer Image,只要他包含基本的 shell (/bin/sh) 即可。
但在实际使用中,我们强烈建议为特定技术栈的服务提供专属的 DevContainer Image。一个好的 DevContainer Image 应该:
- 提供易用的 shell,如:bash,zsh 等
- 提供构建源码所需的基础 SDK,如 JDK
- 提供构建源码所需的工具链,如 git,maven,yarn,make 等
- 提供构建源码所需的第三方依赖包或者自动下载配置,如配置 Maven 镜像源
- 提供开发过程需要的其他调试工具,如 gdb,curl,tcpdump,mysql-client 等
- 不要包含服务的源代码(源代码应该通过源码管理系统检出到本地,并同步到 DevContainer 中。)