使用 Docker + SSH 打造 PyCharm 远程开发环境(基于 Ubuntu 20.04 + Python 3.8)

适用人群:Python 初中级开发者、希望统一开发环境或远程调试的工程师
关键词:Docker、PyCharm、SSH、远程解释器、Python 开发环境

在日常 Python 开发中,我们常常面临“在我机器上能跑”的问题。为了统一开发环境、避免依赖冲突,越来越多开发者选择使用容器化方案。本文将带你从零开始,构建一个轻量级的 Python + SSH 开发容器镜像,并通过 PyCharm 的 SSH 解释器功能实现无缝本地-容器协同开发。

🧱 一、整体架构说明

我们将构建一个基于 ubuntu:20.04 的 Docker 镜像,预装:

  • Python 3.8 + pip
  • openssh-server(支持 root 密码登录)
  • 常用调试工具(如 vim、net-tools)

容器内工作目录为 /workspace,通过 -v 挂载本地项目代码,实现“本地写代码,容器跑程序”。

PyCharm 通过 SSH 连接到容器,直接使用容器内的 Python 解释器运行和调试代码。

📁 二、所需文件清单【可在文章顶部直接下载】

共需 3 个文件(加上 README 共 4 个):

  1. Dockerfile:定义镜像构建逻辑
  2. docker-entrypoint.sh:容器启动脚本,运行 SSH 服务
  3. sources.list(可选):替换为国内 apt 源加速构建
  4. README.md:使用说明文档

🛠 三、Dockerfile 详解

FROM ubuntu:20.04

ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai \
    PYTHONUNBUFFERED=1 \
    LC_ALL=C.UTF-8 \
    LANG=C.UTF-8

# 替换为国内源(可选)
COPY sources.list /etc/apt/sources.list

# 安装 Python + SSH + 工具
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        python3.8 \
        python3-pip \
        openssh-server \
        vim \
        net-tools \
        lsof && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 升级 pip
RUN python3.8 -m pip install --upgrade pip

# 配置 SSH
RUN mkdir -p /run/sshd && \
    echo 'root:123456' | chpasswd && \
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
    ssh-keygen -A

# 复制并设置入口脚本
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

WORKDIR /workspace

EXPOSE 22
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

⚠️ 安全提示:密码 123456 仅用于本地开发,请勿用于生产!

🖥 四、入口脚本:docker-entrypoint.sh

#!/bin/bash
# 启动 SSH 服务(前台模式)
exec /usr/sbin/sshd -D

该脚本确保容器启动后持续运行 SSH 服务,而不是立即退出。

🏗 五、构建与运行容器

1. 构建镜像

docker build -t my-python-dev:20.04 .

2. 启动容器(挂载项目)

docker run -d \
  --name devbox \
  -p 2222:22 \
  -p 5000:5000 \
  -v /your/local/project:/workspace \
  my-python-dev:20.04
  • 2222:22:将容器 SSH 端口映射到宿主机 2222
  • 5000:5000:开放 Flask 默认端口(可根据项目调整)
  • /your/local/project 替换为你的实际项目路径

💻 六、PyCharm 配置 SSH 解释器

  1. 打开 PyCharm → File → Settings → Project → Python Interpreter

  2. 点击右上角齿轮 → Add…
    在这里插入图片描述

  3. 选择 SSH Interpreter

  4. 填写连接信息:

    • Host: localhost
    • Port: 2222
    • Username: root
    • Password: 123456
  5. 映射路径:

    • Local path: /your/local/project
    • Remote path: /workspace
  6. Python 解释器路径:/usr/bin/python3.8

  7. 取消勾选 “Automatically upload files to server”
    在这里插入图片描述

✅ 配置完成后,PyCharm 将直接使用容器内的 Python 环境运行和调试代码!

🔍 七、进入容器调试(可选)

docker exec -it devbox bash
cd /workspace
pip install -r requirements.txt
python app.py  # 注意:Flask 需指定 host='0.0.0.0'

💡 Flask 用户注意:必须设置 app.run(host='0.0.0.0', port=5000),否则无法从宿主机访问!

✅ 八、优势总结

  • 环境隔离:每个项目可独立容器,避免依赖冲突
  • 开发一致:团队共享同一镜像,杜绝“环境差异”问题
  • 无缝集成:PyCharm 原生支持 SSH 解释器,体验接近本地开发
  • 轻量灵活:仅 200MB+ 镜像体积,启动快,资源占用低

🚫 九、注意事项

  • 此镜像仅限本地开发使用,切勿用于生产环境
  • 默认密码过于简单,若需更高安全,可在 Dockerfile 中修改 chpasswd
  • 若项目使用其他端口(如 Django 的 8000),记得在 docker run 中额外映射

📌 结语

通过 Docker + SSH + PyCharm 的组合,我们可以轻松搭建一个高效、统一、可复现的 Python 开发环境。无论是个人项目还是团队协作,这种模式都能显著提升开发体验和效率。

欢迎点赞、收藏、转发!如有疑问,欢迎评论区交流 👇

作者:[xu_wen_xing]
首发于 CSDN
版权声明:本文为原创,转载请注明出处。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐