2016-12-24 47 views
9

所以我和我的團隊都買入了Docker--這對部署和測試來說太棒了。我真正的問題是如何設置一個偉大的開發人員的經驗,特別是圍繞着編寫Python應用程序,但這個問題可以推廣到nodejs,Java等。Docker開發環境中豐富的編輯器

問題:在編寫Python應用程序時,我真的很喜歡有體面的linting/autocomplete功能,那裏有一些非常好的編輯器(Atom,VSCode,PyCharm)提供這些,但是大多數真的需要在本地磁盤上安裝Python。 Docker的真正優勢在於,所有的核心語言和任何項目庫都可以放在容器中,因此爲了開發而在主機上重現所有這些都是一種痛苦。我知道PyCharm pro不支持Docker和docker-compose,但是我發現它非常緩慢,很多測試運行功能都被破壞了。最重要的是,我真的希望我能夠承諾進行版本控制,以便團隊可以共享開發人員設置,而且人們不必爲自己的系統重複所有步驟。

的一些想法,我所做的是:

  1. 安裝在邊車泊塢容器的編輯器(比如Atom),並使用X11轉發
  2. 使用基於瀏覽器的編輯器,例如https://c9.io/在容器 - 這似乎最有希望
  3. 在開發容器中安裝一些代理,可以處理自動完成/內存等,並從本地運行的編輯器連接到它 - 我認爲這將是最好的解決方案,但我也認爲現在它實際上不存在。

有沒有人有幸成立了一個更高效的開發環境,除了安裝卷和編輯文本?

+1

爲什麼不只是運行編輯本地和文件存儲在共享卷,以便更改傳播?這與我與流浪者做的事情是一樣的。 –

+0

@MattSchuchard @MattSchuchard確定它適用於主要源文件 - 我使用自動完成/內省來了解庫文件,這些文件位於泊塢窗容器中,而不是作爲卷裝入。 –

+0

在容器初始化期間是否會自動設置庫文件?我認爲他們之後不應該受到手動更改,除非這是一個非常不穩定的開發環境。 –

回答

13

您應該使用像IntelliJ(Pycharm)這樣的適當IDE,使用對您的Docker-Container的SSH訪問來配置remote Python SDK(在開發人員映像上使用開發人員共享的ssh-key,並預先安裝openssh服務器和預配置的授權文件)。 你可以在你的項目文件中共享這個SDK信息,所以所有的開發人員都會擁有它。

1)這可以確保你的IDE在運行時知道你的docker-container中可用/安裝的所有python庫。並且還將使您能夠同時進行遠程調試

2)這還可以確保您擁有一個合適的IDE,並具備您可以想到的所有功能。幾乎沒有基於瀏覽器的IDE會趕上Pycharm

當然,正如評論中已經提到的那樣,您需要將您的代碼分享到容器中。在linux上,你明顯使用host-volume-mount從本地src文件夾到容器。

在OSX,你會遇到性能問題,並且可能使用類似http://docker-sync.io(我有偏見 - 還有很多其他類似的工具)

+0

謝謝! @Eugen Mayer – aserww106

+0

這聽起來像是我需要的,但我並不真正瞭解你的意思是「遠程Python SDK」。在網上查找它,我從PyCharm找到了關於設置這樣的文檔,但是我沒有真正運行它的工作。 :( – CoreDumpError

+0

因此,您建議修改應用程序的Dockerfile以包含ssh和openssh服務器,以便您可以從IDE隧道到它? – Pitt