欢迎光临散文网 会员登陆 & 注册

Docker学习路线12:开发者体验

2023-07-26 19:34 作者:小万哥丶  | 我要投稿

到目前为止,我们只讨论了使用Docker来部署应用程序。然而,Docker也是一个极好的用于开发应用程序的工具。可以采用一些不同的建议来改善开发体验。


•在应用程序中使用docker-compose以方便开发。•使用绑定挂载将本地代码挂载到容器文件系统中,以避免每次更改都需要重新构建容器映像。•对于自动重载,您可以使用像vite[1]这样的工具用于客户端,nodemon[2]用于nodejs,或者air[3]用于golang。•您还应该提供一种调试应用程序的方式。例如,使用delve[4]进行Go调试,在node.js中启用调试使用--inspect标志等等。无论您使用什么,重点是您应该有一种方法来调试在容器内运行的应用程序。•您应该有一种在容器内运行测试的方法。例如,您可以有一个单独的docker-compose文件来运行测试。•您应该拥有一个用于生产映像的CI流水线。•每个拉取请求都应该有一个临时环境。


Hot Reloading in Docker


即使我们启用了层缓存以加速镜像构建,我们也不想在每次代码更改时都重建容器镜像。相反,我们希望容器中的应用程序状态立即反映更改。我们可以通过绑定挂载和热重新加载工具的组合来实现这一点!


在 Docker 中使用调试器


为了使容器开发与本地开发具有竞争力,我们需要能够在容器内运行和附加调试器。


测试


我们希望在尽可能接近生产环境的情况下运行测试,因此最好在容器内部进行测试!


持续集成(CI)


持续集成是指在将代码推送到版本控制系统时自动执行某些操作(例如构建、测试等)的理念。


对于容器,我们可能需要执行以下几个操作:


•构建容器镜像•执行测试•扫描容器镜像的漏洞•给镜像打标签,附加有用的元数据•推送到容器注册表


最后


为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:


公众号 Let us Coding牛客[5]知乎[6]开源中国[7]CSDN[8]思否[9]掘金[10]InfoQ[11]简书[12]博客园[13]慕课[14]51CTO[15]helloworld[16]腾讯开发者社区[17]阿里开发者社区[18]


看完如果觉得有帮助,欢迎点赞、收藏关注


到目前为止,我们只讨论了使用Docker来部署应用程序。然而,Docker也是一个极好的用于开发应用程序的工具。可以采用一些不同的建议来改善开发体验。


•在应用程序中使用docker-compose以方便开发。•使用绑定挂载将本地代码挂载到容器文件系统中,以避免每次更改都需要重新构建容器映像。•对于自动重载,你可以使用像vite[19]这样的工具用于客户端,nodemon[20]用于nodejs,或者air[21]用于golang。•你还应该提供一种调试应用程序的方式。例如,使用delve[22]进行Go调试,在node.js中启用调试使用--inspect标志等等。无论你使用什么,重点是你应该有一种方法来调试在容器内运行的应用程序。•你应该有一种在容器内运行测试的方法。例如,你可以有一个单独的docker-compose文件来运行测试。•你应该拥有一个用于生产映像的CI流水线。•每个拉取请求都应该有一个临时环境。


Hot Reloading in Docker


即使我们启用了层缓存以加速镜像构建,我们也不想在每次代码更改时都重建容器镜像。相反,我们希望容器中的应用程序状态立即反映更改。我们可以通过绑定挂载和热重新加载工具的组合来实现这一点!


在 Docker 中使用调试器


为了使容器开发与本地开发具有竞争力,我们需要能够在容器内运行和附加调试器。


测试


我们希望在尽可能接近生产环境的情况下运行测试,因此最好在容器内部进行测试!


持续集成(CI)


持续集成是指在将代码推送到版本控制系统时自动执行某些操作(例如构建、测试等)的理念。


对于容器,我们可能需要执行以下几个操作:


•构建容器镜像•执行测试•扫描容器镜像的漏洞•给镜像打标签,附加有用的元数据•推送到容器注册表


最后


为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:


公众号 Let us Coding牛客[23]知乎[24]开源中国[25]CSDN[26]思否[27]掘金[28]InfoQ[29]简书[30]博客园[31]慕课[32]51CTO[33]helloworld[34]腾讯开发者社区[35]阿里开发者社区[36]


看完如果觉得有帮助,欢迎点赞、收藏关注


相关链接


[1] vite: https://vitejs.dev/
[2] nodemon: https://nodemon.io/
[3] air: https://github.com/cosmtrek/air
[4] delve: https://github.com/go-delve/delve
[5] 牛客: https://www.nowcoder.com/users/752272586
[6] 知乎: https://www.zhihu.com/people/11-78-37-92/posts
[7] 开源中国: https://my.oschina.net/u/5599376
[8] CSDN: https://blog.csdn.net/2302_76489021?type=blog
[9] 思否: https://segmentfault.com/u/caisekongbai/articles
[10] 掘金: https://juejin.cn/user/3162666248713837/posts
[11] InfoQ: https://www.infoq.cn/profile/75CD8E259D2070/publish
[12] 简书: https://www.jianshu.com/u/75146b564de0
[13] 博客园: https://www.cnblogs.com/xiaowange/
[14] 慕课: https://www.imooc.com/u/index/articles
[15] 51CTO: https://blog.51cto.com/xiaowange
[16] helloworld: https://www.helloworld.net/6389284992
[17] 腾讯开发者社区: https://cloud.tencent.com/developer/user/10282289
[18] 阿里开发者社区: https://developer.aliyun.com/profile/ssy2zbcsdghuk
[19] vite: https://vitejs.dev/
[20] nodemon: https://nodemon.io/
[21] air: https://github.com/cosmtrek/air
[22] delve: https://github.com/go-delve/delve
[23] 牛客: https://www.nowcoder.com/users/752272586
[24] 知乎: https://www.zhihu.com/people/11-78-37-92/posts
[25] 开源中国: https://my.oschina.net/u/5599376
[26] CSDN: https://blog.csdn.net/2302_76489021?type=blog
[27] 思否: https://segmentfault.com/u/caisekongbai/articles
[28] 掘金: https://juejin.cn/user/3162666248713837/posts
[29] InfoQ: https://www.infoq.cn/profile/75CD8E259D2070/publish
[30] 简书: https://www.jianshu.com/u/75146b564de0
[31] 博客园: https://www.cnblogs.com/xiaowange/
[32] 慕课: https://www.imooc.com/u/index/articles
[33] 51CTO: https://blog.51cto.com/xiaowange
[34] helloworld: https://www.helloworld.net/6389284992
[35] 腾讯开发者社区: https://cloud.tencent.com/developer/user/10282289
[36] 阿里开发者社区: https://developer.aliyun.com/profile/ssy2zbcsdghuk



Docker学习路线12:开发者体验的评论 (共 条)

分享到微博请遵守国家法律