Docker 开发环境中的富编辑器

Rich editors in a Docker development environment

所以我和我的团队都购买了 Docker - 它非常适合部署和测试。我真正的问题是如何建立良好的开发人员体验,特别是围绕编写 Python 应用程序,但这个问题可以推广到 nodejs、Java 等

问题:在编写 Python 应用程序时,我真的很喜欢拥有体面的 linting/autocomplete 功能,那里有一些非常好的编辑器(Atom、VSCode、PyCharm) 提供了这些,但大多数确实想要 Python 安装在本地磁盘上。 Docker 的真正优势是所有核心语言和任何项目库都可以在容器中,因此在主机上复制所有这些只是为了开发是一件痛苦的事情。

我知道 PyCharm pro 确实支持 Docker 和 docker-compose,但我发现它非常缓慢并且很多测试 运行 功能都被破坏了.最重要的是,我真的很想要一些我可以提交给版本控制的东西,这样团队就可以共享开发设置,而人们不必为他们自己的系统重复所有步骤。

我的一些想法是:

  1. 在 sidecar Docker 容器中安装编辑器(如 Atom)并使用 X11 转发
  2. 在容器中使用基于浏览器的编辑器,例如 https://c9.io/ - 这似乎最有希望
  3. 在可以处理 autocomplete/linting 等的开发容器中安装一些代理,并从本地 运行 编辑器连接到它 - 我认为这将是最好的解决方案,但我也认为现在它实际上并不存在。

除了安装卷和编辑文本之外,是否有人幸运地设置了一个更高效的开发环境?

您应该使用像 IntelliJ (Pycharm) 这样的 'advanced' IDE 并使用 SSH-Access 配置 remote Python SDK 到您的应用程序-Docker-容器(使用共享的 ssh 密钥通过预安装的 openssh 服务器和预配置的 authorized_keys 文件对应用程序容器进行身份验证)。 您可以在您的项目文件中与所有开发人员共享此 SDK 信息,这样他们就可以立即使用此设置

1) 这将确保您的 IDE 在 [=36= 期间知道您的 docker-容器中的所有 python libs/symbols available/installed ]时间。它还将使您能够同时正确地进行远程调试

2) 这确保您手头有一个 IDE,包括许多重要的附加功能,例如检查器、3way duff、在路径中搜索...。几乎没有任何基于浏览器的 IDE 会在这一点上赶上 Pycharm 恕我直言

当然,正如评论中已经提到的,您需要将您的代码共享到容器中。在 linux 上,您直接使用从本地 src 文件夹到容器的 host-volume-mount。

在 OSX,您将 运行 在使用主机挂载时遇到性能问题。您可能会使用类似 http://docker-sync.io 的东西(我有偏见 - 还有很多其他类似的工具)

可以使用x11docker

  • x11docker allows to run graphical desktop applications (and entire desktops) in Docker Linux containers.
  • Docker allows to run applications in an isolated container environment. Containers need much less resources than virtual machines for similar tasks.
  • Docker does not provide a display server that would allow to run applications with a graphical user interface.
  • x11docker fills the gap. It runs an X display server on the host system and provides it to Docker containers.
  • Additionally x11docker does some security setup to enhance container isolation and to avoid X security leaks. This allows a sandbox environment that fairly well protects the host system from possibly malicious or buggy software.
  1. https://github.com/mviereck/x11docker
  2. https://github.com/mviereck/x11docker/wiki(广博!知识)
  3. https://dev.to/brickpop/my-dream-come-true-launching-gui-docker-sessions-with-dx11-in-seconds-1a53

我知道这是一个老问题,但当我在尝试查看其他编辑可能在此 space 中提供的内容时偶然发现了它,我想指出 Visual Studio Code 的概念a Dev Container,这似乎提供了迄今为止我所见过的最好的集成水平。我希望自己能看到这变成一种行业趋势。