如何从Docker运行PyCharm?

时间:2018-07-12 14:55:21

标签: docker pycharm

我能够从保存Dockerfile的路径构建一个Docker映像,其中包含PyCharm的安装说明。构建图像时,我可以查看创建的图像列表。然后我键入docker run ti -pycharm,这是我在终端中构建的映像的名称,并且我的容器正在运行。现在我被困在如何从该容器中加载Pycharm?谢谢

2 个答案:

答案 0 :(得分:1)

好的,我现在了解您的问题。您需要能够运行您的主机不具有依赖项的python脚本。


顺便说一句,管理Python依赖项的常用方法是使用virtualenvvirtualenvwrapper。如果您不熟悉它,并且想要一种简单的方法来管理python依赖项,则应该阅读有关它的更多信息,因为这可能是最好的解决方案。


使用Docker作为管理python依赖项的方法也可以很好地工作,并且这是一种相对较新的实践,可能会变得越来越普遍。在这种情况下,您不想从Docker容器内部运行PyCharm 。相反,您应该在主机上的PyCharm中进行开发,并仅使用容器来运行python脚本。

最好的例子可能是一个例子。为简单起见,创建一个新文件夹,cd到该文件夹​​,并创建一个简单的python脚本(hello.py):

#!/usr/bin/env python
print("Hello, world!")

现在,我们可以运行以下Docker命令:

$ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python hello.py

该命令会将当前目录作为/ usr / src / myapp挂载到容器中。当您对项目执行此操作时,该目录应该是您的项目目录。该命令将容器中的工作目录设置为/ usr / src / myapp,以便我们可以使用相对路径。只需将命令末尾的hello.py更改为要运行的脚本的相对路径即可。

由于您的项目文件夹已作为卷装入容器中,因此您可以在主机上的PyCharm中编辑代码并在容器中运行脚本。此示例使用了默认的python 3容器,但是将上面命令中的映像名称替换为您要使用的映像名称很简单,该映像已经安装了所需的依赖项。

答案 1 :(得分:0)

在docker内部或外部运行IDE时存在多个问题。

当在docker内部使用python解释器在主机上运行PyCharm时,共享代码库可以由

处理
  1. PyCharm的远程解释器功能

  2. 在docker容器内安装主机目录:

    • Windows上的Docker桌面在docker容器中挂载Windows目录时有很多限制。
      • Linux容器无法更改Windows目录中文件的权限。文件似乎总是具有权限755(rwxr-xr-x)。如果您尝试将linux容器中的openssh配置或密钥挂载,Linux上的ssh将拒绝使用这些文件,因为它们不安全。 https://docs.docker.com/v17.09/docker-for-windows/troubleshoot/#permissions-errors-on-data-directories-for-shared-volumes
      • Linux容器不会获取文件系统事件(intify),从而使其知道从Windows挂载的文件中的文件已更改。如果使用./manage.py runserver在开发中运行Django,则需要轮询代码库中的所有文件以查看是否有任何更改。我尚未测试Django的轮询。如果无法快速运行,则可能必须重新启动Django,以使其反映您的更改。 https://william-yeh.net/post/2019/06/inotify-in-containers/
      • 当主机是Mac时,这会更好地工作,因为osxfs挂载的卷与linux容器一起工作更好。 https://docs.docker.com/docker-for-mac/osxfs/
        1. 在Windows的linux容器中安装目录。
      • 带有WinFSP的SSHFS允许Windows通过ssh挂载文件。这需要在Linux容器中安装ssh服务器。 linux容器上的NFS或Samba服务器也可以用于文件共享,但是存在类似的问题。
      • Windows上的
      • PyCharm不支持​​轮询文件更改。如果您通过ssh,NFS或SMB挂载代码库,PyCharm将不知道您是否添加了新文件。如果您为代码库切换到其他分支,则尤其是一个问题。

当前,我正在尝试在linux容器中运行PyCharm。

  • 在Windows的Docker桌面上,您无法使用JetBrains工具箱来安装PyCharm,因为它是与需要支持保险丝内核驱动程序的AppImage一起安装的。似乎docker在该领域取得了进步,但是我的Windows 10版本不是Insider Preview的一部分,因此我没有测试这些新功能。 https://www.infoq.com/news/2019/12/docker-desktop-windows-fuse/
  • 您可以只安装pycharm tarball并运行它。您肯定需要增加内存并在Docker Desktop的“资源”设置中进行交换。
  • 为了使linux容器可以显示gui应用程序,Windows需要运行xserver,例如VcXsrv。开始后,您可以设置环境变量DISPLAY=localhost:0。通过指定localhost而不仅仅是DISPLAY=:0,您运行的任何gui应用程序都将知道它需要通过TCP连接到VcXsrv,而不是查找不存在的unix套接字。
  • 通过在Linux容器中运行PyCharm,我也不必考虑Git中的crlf转换设置。 https://help.github.com/en/github/using-git/configuring-git-to-handle-line-endings