Docker 开发环境中的丰富编辑器

2024-03-01

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

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

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

我的一些想法是:

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

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


您应该使用 IntelliJ (Pycharm) 等“高级”IDE 并配置remote Python SDK使用 SSH 访问您的 App-Docker-Container(使用共享 ssh-key 通过预安装的 openssh 服务器和预配置的authorized_keys 文件对 app-container 进行身份验证)。 您可以在项目文件中与所有开发人员共享此 SDK 信息,这样他们就可以立即使用此设置

1) 这将确保您的 IDE 在运行时了解 docker 容器中可用/安装的所有 python 库/符号。它还将使您能够同时正确地进行远程调试

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

当然,正如评论中已经提到的,您需要共享(也称为将代码挂载到容器中)。在 Linux 上,您可以简单地使用从本地 src 文件夹到容器的 host-volume-mounts。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 开发环境中的丰富编辑器 的相关文章

随机推荐

  • var FOO = FOO || 如何实现Javascript 中的 {} 习惯用法?

    从这个问题来看 var FOO FOO 将变量或空对象分配给该变量 在 Javascript 中意味着什么 https stackoverflow com questions 6439579 what does var foo foo as
  • 如何用单引号插入文本sql server 2005

    我想插入带单引号的文本 例如 john 到 sql server 2005 数据库中的表 正如 Kirtan 指出的那样 使用附加单引号来转义单引号如果您尝试通过 sp executesql 执行动态 sql 这首先不是一个好主意 那么下面
  • 如何从 UITableView 中获取选定的行?

    因此 我编写了这段代码 在我想要选择的行旁边打上复选标记 因为我想要多个选定的行 UITableViewCell cell tableView cellForRowAtIndexPath path if cell accessoryType
  • 为什么 const 左值引用可以引用可变右值引用?

    在 C 11 中 可以使用可变右值引用来初始化 const 左值引用 然后 右值引用的值可以发生变化 产生 const 左值引用的可见突变 这是一个例子 int rval 3 const int lval rval cout lt lt l
  • DbSet 在 EF7 中没有 Find 方法

    我正在尝试创建一个通用存储库来访问我的数据库 在 EF6 中 我能够这样做以获得特定的实体 protected IDbSet
  • R:合并具有相同ID的行[重复]

    这个问题在这里已经有答案了 Edit 我将 Var4 更改为字符串值 因为我的问题对我的数据不够精确 因此由于类型无效 答案失败 对此感到抱歉 这是我的第一个问题 我希望有人可以帮助我 我有以下数据集 ID Date N Date Var1
  • 在列表中查找一个值[重复]

    这个问题在这里已经有答案了 我使用以下命令来检查是否item is in my list if item in my list print Desired item is in list Is if item in my list 在列表中
  • 与 Vuex-ORM 的两种方式数据绑定

    有谁知道使用时在表单中实现双向数据绑定的库或已经描述的模式Vuex ORM https vuex orm github io vuex orm 我找到了几个可以帮助解决 Vuex 问题的库 但还没有专门针对 Vuex ORM 的库 vuex
  • 如何在 Java 中使用 servlet 过滤器来更改传入的 servlet 请求 url?

    如何使用 servlet 过滤器更改传入的 servlet 请求 url http nm java appspot com Check License Dir My App Dir ABC My Obj 123 to http nm jav
  • 使用spring-amqp和rabbitmq实现带退避的非阻塞重试

    我正在寻找一种使用 spring amqp 和 Rabbit MQ 的退避策略来实现重试的好方法 但要求是侦听器不应被阻止 因此可以自由地处理其他消息 我在这里看到了类似的问题 但它不包括 后退 的解决方案 RabbitMQ 和 Sprin
  • Kohana 3 分页

    我真的不知道 Kohana 3 中的分页是如何工作的 Kohana 3 中是否有一个很好的分页示例 Get the total count of articles count this gt profil gt articles gt co
  • 如何检测窗口是否闪烁

    当需要吸引用户注意时 我使用 FlashWindowEx 来闪烁应用程序窗口 窗口标题和任务栏按钮持续闪烁 直到应用程序获得焦点 如何检查应用程序当前是否正在闪烁 即 自从指示其闪烁以来尚未获得焦点 这里有两种可能的解决方案 一种使用 WH
  • 使用退格键删除整个 Spannable

    我有一个聊天应用程序 可以在文本中添加表情符号 我有一个问题EditText场地 表情符号图像显示出来 但如果我按普通键盘上的退格按钮 我要更改为表情符号图片的文本就会显示出来 我必须删除几个字符 直到图片消失 我在用Spannable去做
  • Rails,每当和 docker - cron 任务不运行

    我的定时任务来自schedule rb不适用于 docker 容器 但是crontab l结果已经包含这一行 Begin Whenever generated tasks for app config schedule rb 45 19 b
  • WebStorm 中的 Velocity 语法高亮显示

    WebStorm 中有 Velocity 语法的插件 下载吗 我碰到这个帖子 http wiki apache org velocity IntelliJSyntaxHighlighting但没有目录filetypes在我的道路上 对于Ma
  • spring-kafka AckMode 中的 MANUAL 和 MANUAL_IMMEDIATE 有什么区别

    从 spring docs 中 我可以看到 MANUAL 消息监听器负责acknowledge 确认 之后 应用与 BATCH 相同的语义 手动 立即 当侦听器调用 Acknowledgment acknowledge 方法时立即提交偏移量
  • jQuery UI 显示/隐藏幻灯片效果 - 如何更改幻灯片“后退”速度

    我的页面包含许多 OL 列表 每个列表都显示精选的链接 单击每个链接时 内容会滑出到右侧 单击每个链接时 内容会滑入 然后再次滑出 这是一个小提琴 展示了这一点 http jsfiddle net juxprose xu3ck 15 htt
  • htaccess 无提示重定向到子目录:当没有尾随“/”时显示子目录

    我在 Google 和 StackOverflow 上四处搜寻 试图找出我的问题 尝试了无数的解决方案 但没有一个完全奏效 我希望将服务器上主域的 Web 根目录移动到子目录 我目前拥有的 Web 根目录的服务器路径 home user p
  • 尝试使鼠标光标在硒测试用例中可见

    我在 chromedriver 上使用 Java 中的 Selenium Webdriver 并尝试在执行测试用例时永久显示光标 我尝试过机器人和动作课 但没有成功 例如我尝试过这个 Actions builder new Actions
  • Docker 开发环境中的丰富编辑器

    所以我和我的团队已经购买了 Docker 它对于部署和测试来说非常棒 我真正的问题是如何建立良好的开发人员体验 特别是围绕编写 Python 应用程序 但这个问题可以推广到 Nodejs Java 等 问题 在编写 Python 应用程序时