利用 PyCharm 实现本地代码与远程 Docker 环境的实时同步
本文介绍如何利用 PyCharm 专业版的 SFTP 部署模块,实现本地代码与远程 Linux 服务器的实时同步。通过配置远程服务器连接及映射路径,结合 Docker 环境,可将代码构建与镜像打包任务移至海外服务器,从而解决国内网络拉取镜像慢及本地资源占用高的问题,提升开发效率。
背景与问题
在国内使用 Docker 时,无论是 Pull、Build 还是 Push 镜像,往往面临速度缓慢的问题。这主要是因为许多源位于国外,导致下载和上传过程耗时较长。
近期开发的项目均基于 Docker 运行。在测试阶段,通常需要执行 Build 操作以验证逻辑是否正确。
在本地机器上构建镜像存在两个主要问题:首先是速度慢,受限于国内网络线路,新镜像的 Pull 过程可能耗时极长;部分私有镜像难以配置加速器,公开镜像使用多个加速器后效果仍不理想。其次是资源占用,若构建过程涉及编译操作,会大量消耗本地 CPU 资源,导致机器运行卡顿。
因此,将 Build 过程迁移至服务器是一个可行的解决方案。若拥有海外服务器,不仅能解决速度问题,还能避免占用本地机器的 CPU 资源。
然而,代码编写需在本地完成,而编译和运行在远端,这就引出了代码如何同步到远端的问题。
本节将介绍一种将本地代码实时同步至远程服务器的方法。
该功能已使用较长时间,此前因需手动配置远端运行环境而略显鸡肋。但切换到 Docker 运行后,体验显著改善。若项目使用 Docker 运行,建议尝试此方法。
环境要求与工具选择
要求
开始前需具备一台已安装 Docker 的远程 Linux 服务器,且必须支持 SSH 远程访问。若为海外服务器,镜像构建速度将更快。
本文以 PyCharm 为例演示远程同步功能。若主要使用 Python,推荐 PyCharm;其他 JetBrains IDE 也基本具备此功能。注意,必须使用专业版,社区版不支持该功能。
PyCharm 远程同步配置
配置
利用 PyCharm 内置组件,可轻松实现本地代码到服务器的实时同步。
PyCharm 提供 SFTP 部署模块,用于将本地代码实时同步至远端。
首先,在 PyCharm 中打开任意项目,此处以个人项目为例进行演示。

随后点击 PyCharm 菜单中的 Tools -> Deployment -> Configuration,在此处配置远程 SFTP 服务器,如图所示:

打开配置界面后,选择 SFTP 并填入服务器连接信息,如图所示:

在此界面可点击「TEST CONNECTION」测试连接是否成功。
配置完成后,已成功添加一台远程服务器,例如 Host 为 vm1.cuiqingcai.com 的服务器。
要实现本地与服务器文件同步,需指定本地项目文件夹与远程文件夹的对应关系。切换至第二个选项卡 Mappings,如图所示:

通过选择 LocalPath 和 Deployment Path,分别指定本地和远程文件夹。注意,后者指的是相对于服务器工作目录的路径。
基本配置完成后,若需排除某些路径不同步,可在第三个选项卡 Excluded Paths 中进行配置。
此外,点击 Tools -> Deployment -> Options 可配置更多细节,如图所示:

例如,可配置上传时机。此处设置为按 Ctrl + S 保存时上传,以便自由控制上传时间。
同时,需勾选自动上传选项,如图所示:

至此,所有配置均已完成。
功能测试与远程 SSH 使用
测试
接下来进行上传测试,可通过菜单中的 Upload to 选项上传代码。
点击上传后,PyCharm 会打开 File Transfer 窗口显示上传结果,如图所示:

上传即告完成。
随后修改任意文件并按保存(Ctrl + S),此时会出现自动上传日志,提示文件上传成功。

验证无误。
远程 SSH
PyCharm 还提供远程 SSH Terminal 功能,直接点击 Tools -> Start SSH Session 即可,如图所示:

点击后提示选择远程服务器,选择后下方 Terminal 弹出,与普通 SSH Shell 无异。

接下来构建镜像,只需运行对应的 docker-compose 命令,速度显著提升。无需再担忧缓慢的下载速度,也不必担心本地机器资源消耗。

体验良好。
构建并运行后,直接远程访问即可。
注意:请确保服务器安全组限制已开放,以免出现远程端口无法访问的问题。
关于利用 PyCharm 实现本地代码与远端实时同步功能的介绍至此结束。更多相关内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













