如何从Docker运行PyCharm?
我能够从保存Dockerfile的路径构建docker映像,该路径包含PyCharm的安装说明。在构建图像时,我能够查看创建的图像列表。然后我输入docker run ti-pycharm,这是我在终端中构建的图像的名称,我让我的容器运行。现在我被困在如何从这个容器中装载Pycharm?谢谢好的,我现在明白你的问题了。您需要能够运行主机没有依赖项的python脚本如何从Docker运行PyCharm?,docker,pycharm,Docker,Pycharm,我能够从保存Dockerfile的路径构建docker映像,该路径包含PyCharm的安装说明。在构建图像时,我能够查看创建的图像列表。然后我输入docker run ti-pycharm,这是我在终端中构建的图像的名称,我让我的容器运行。现在我被困在如何从这个容器中装载Pycharm?谢谢好的,我现在明白你的问题了。您需要能够运行主机没有依赖项的python脚本 另一方面,管理python依赖关系的常用方法是使用和。如果您不熟悉它,并且想要一种简单的方法来管理python依赖关系,那么您应该
另一方面,管理python依赖关系的常用方法是使用和。如果您不熟悉它,并且想要一种简单的方法来管理python依赖关系,那么您应该阅读更多关于它的内容,因为这可能是最好的解决方案
使用Docker作为一种管理python依赖关系的方法也可以很好地工作,这是一种相对较新的实践,可能正在变得越来越普遍。在这种情况下,您不希望从Docker容器内部运行PyCharm。相反,您应该在主机上使用PyCharm进行开发,并使用容器简单地运行python脚本 最好的方式来说明这是如何工作的可能是一个例子。为了简单起见,创建一个新文件夹,将cd刻录到其中,然后创建一个简单的python脚本(
hello.py
):
现在,我们可以运行以下Docker命令:
$ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python hello.py
该命令将以/usr/src/myapp的形式将当前目录装载到容器中。当您对项目执行此操作时,它应该是您的项目目录。该命令将容器中的workdir设置为/usr/src/myapp,以便我们可以使用相对路径。只需将命令末尾的hello.py
更改为要运行的脚本的相对路径
由于项目文件夹作为卷装入容器中,因此可以在主机上的PyCharm中编辑代码,并在容器中运行脚本。本例使用了默认的Python3容器,但将上述命令中的图像名称替换为您要使用的图像名称很简单,该名称可能已经安装了所需的依赖项。在docker内部或外部运行IDE时存在几个问题 在主机上运行PyCharm时,在docker内部使用python解释器,共享代码库可以由
- 通过SSH:
- 通过Docker TCP端口:
- 代码驻留在主机上,这是PyCharm提供静态分析所必需的
- 无论何时您想要运行代码,它都需要与远程系统同步。我不确定同步是如何进行的,所以我不知道同步是双向的,还是主机上的PyCharm总是覆盖远程系统(docker容器)
- 当在Docker容器中装载Windows目录时,Windows上的Docker Desktop有很多限制。
- linux容器无法更改Windows目录中文件的权限。这些文件似乎始终具有755(rwxr-xr-x)权限。如果您试图在linux容器中装载openssh配置或密钥,linux上的ssh将拒绝使用这些文件,因为它们不安全。
- linux容器不会获取文件系统事件(inotify),让它知道从Windows装载的文件上的文件已更改。如果在开发中使用
运行Django,它将需要轮询代码库中的所有文件以查看是否有任何更改。我还没有测试Django的投票结果。如果它不能足够快地工作,您可能必须重新启动Django,以便它反映您的更改。/manage.py runserver
- 当主机是Mac时,这会更好,因为osxfs装载的卷在linux容器中工作得更好。
- 在Windows上的linux容器中装载目录
- 带有WinFSP的SSHFS允许Windows通过ssh装载文件。这需要在linux容器中安装ssh服务器。linux容器上的NFS或Samba服务器也可用于文件共享,但存在类似问题
- Windows上的PyCharm不支持轮询文件更改。如果您通过ssh、NFS或SMB装载代码库,PyCharm将不知道您是否添加了新文件。如果切换到代码库的其他分支,这尤其是一个问题
- 对于Docker Desktop for Windows,您不能使用JetBrains工具箱来安装PyCharm,因为它与需要支持fuse内核驱动程序的AppImage一起安装。docker似乎在这方面取得了进步,但我的Windows 10版本并不是Insider预览版的一部分,所以我还没有测试这些新功能。
- 您只需安装pycharm tarball并运行它。您肯定需要在Docker Desktop的资源设置中增加内存和交换
- 为了使linux容器能够显示gui应用程序,Windows需要运行诸如VcXsrv之类的xserver。启动后,可以设置env var
。通过指定DISPLAY=localhost:0
而不仅仅是localhost
,您运行的任何gui应用程序都会知道它需要通过TCP连接到VcXsrv,而不是查找不存在的unix套接字DISPLAY=:0
- 通过在linux容器中运行PyCharm,我也不必考虑Git中的crlf转换设置李>
$ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python hello.py