因此,我和我的团队都购买了Docker- 对于部署和测试而言,它很棒。我真正的问题是如何建立出色的开发人员体验,尤其是围绕编写Python应用程序的问题,但是这个问题可以推广到nodejs,Java等。
问题:编写Python应用程序时,我真的很喜欢具有不错的linting / autocomplete功能,那里有一些非常好的编辑器(Atom,VSCode,PyCharm)提供了这些功能,但是大多数人确实希望将Python安装在本地磁盘上。Docker的真正优势在于所有核心语言和任何项目库都可以在容器中,因此仅在开发时就在主机上复制所有这些内容是一件痛苦的事情。
我知道PyCharm Pro确实支持Docker和docker- compose,但是我发现它相当缓慢,并且许多测试运行功能都被破坏了。最重要的是,我真的希望我可以致力于版本控制,以便团队可以共享开发人员设置,而人们不必为自己的系统重复所有步骤。
我的一些想法是:
除了挂载卷和编辑文本之外,还有谁能幸运地建立一个更具生产力的开发环境?
您应该使用像IntelliJ(Pycharm)这样的“高级” IDE并配置remote Python SDK对您的App-Docker- Container使用SSH访问(使用共享的ssh- key通过预先安装的openssh服务器和预配置的authorized_keys文件对应用程序容器进行身份验证)。您可以与所有开发人员在项目文件中共享此SDK信息,因此他们将立即使用此设置
remote Python SDK
1)这将确保您的IDE知道在运行时在docker-container中可用/安装的所有python库/符号。它还将使您能够同时正确地进行远程调试
2)这样可以确保您手边有一个IDE,其中包括许多重要的附加功能,例如检查器,3way duff,在路径中搜索。在这一点上,几乎所有基于浏览器的IDE都不会赶上Pycharm
当然,正如评论中已经提到的,您还需要共享将代码装入容器中。在Linux上,您通常使用从本地src文件夹到容器的host-volume-mounts。
在OSX上,使用主机挂载时会遇到性能问题。您可能会使用类似http://docker-sync.io的东西(我有偏见-还有很多其他类似的工具)