Pycharm通过ssh远程docker容器搭建开发环境

本地pycharm通过ssh方式远程连接服务器(Ubuntu)上的docker容器,搭建开发环境。实现功能:将环境依赖打包成docker镜像,并在远程服务器中启动容器(启动时做好端口映射和文件夹挂载),通过本地pycharm的ssh加载远程docker容器中的环境解释器,实现本地prcharm开发的代码能同步到容器中和远程服务器中。

1 构建docker镜像(在本地电脑)

1.1 拉取Ubuntu22.04基础镜像

在dockerhub中拉取Ubuntu22.04的docker镜像,需要外网,参考链接如下:

https://hub.docker.com/r/homebrew/ubuntu22.04?uuid=C4C11E31-4AED-4366-88D0-5CCB49FAD7E8

可在windows(开墙)的docker desktop上拉取

1.2 构建开发环境docker镜像

制作Docker镜像,该镜像的Dockerfile文件如下:

其中同目录下放requirements.txt文件

python 复制代码
# 使用基础镜像
# 使用基础镜像
FROM homebrew/ubuntu22.04:latest
USER root

# 设置工作目录
WORKDIR /app

# 复制 requirements.txt 到容器内
COPY requirements.txt .

# 安装 Python 和 pip
RUN apt-get update && apt-get install -y python3 python3-pip

RUN pip3 install --no-cache-dir -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package

创建docker镜像

python 复制代码
docker build -t my-ubuntu-python .

构建完成后,docker images命令查看docker镜像

打包docker镜像到本地

python 复制代码
docker save -o my-ubuntu-python.tar my-ubuntu-python

将打包好的本地docker镜像包上传到服务器

2 ubuntu服务器加载镜像并启动容器

2.1 加载镜像

进入Ubuntu服务器

加载docker镜像

python 复制代码
sudo docker load -i my-ubuntu-python.tar

查看docker镜像(以我此前加载的为例,依赖包较多,所以文件大)

2.2 启动容器

python 复制代码
docker run -p 10022:22  -it -d --name=my-ubuntu-python -v "主机共享路径":"容器映射路径"  my-ubuntu-python  /bin/bash

2.3 进入容器

python 复制代码
docker exec -it my-ubuntu-python /bin/bash

2.4 安装ssh

python 复制代码
apt-get update
apt-get install openssh-server
apt-get install vim

2.5 修改配置文件

python 复制代码
vim /etc/ssh/sshd_config

PermitRootLogin prohibit-password修改为PermitRootLogin yes

并去除注释

2.6 创建容器root密码

python 复制代码
passwd root

2.7 重启ssh

python 复制代码
service ssh restart

3 pycharm连接容器

3.1 ssh映射文件

python 复制代码
tool ->Deployment->Configuration
添加SFTP服务,设置主机ip,填写映射端口,配置路径映射地址


3.2 加载容器中的环境解释器

pycharm右下角,add New interpreter->on SSH,输入连接信息,其中host为服务器的ip,如下图,

最后一步,选择System Interpreter,配置映射路径,最后点击create

参考链接

https://blog.csdn.net/qq_38236744/article/details/114676794

相关推荐
名字还没想好☜39 分钟前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
hj2862513 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器
HAPPY酷4 小时前
【ROS2】16G 内存笔记本跑 ROS2 仿真?VMware 虚拟机“保姆级”配置指南 (R9 7940HX + RTX 4060)
java·linux·ide·windows·pycharm
梦想的颜色11 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
极客先躯19 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
大E帝国子民121 小时前
Docker 部署 RocketMQ 5
docker·容器·rocketmq
江湖有缘21 小时前
【保姆级教程】使用Docker Compose一键搭建Picsur私有图床服务
java·docker·容器
java_logo1 天前
5 分钟共享打印机:用 Docker 一键部署 CUPS
运维·docker·容器·cups·网络打印机·共享打印机·docker部署cups
fen_fen1 天前
Docker部署PostgreSQL10 开启SSL和证书安装文档
docker·容器·ssl
EnCi Zheng1 天前
N3A-一个端口只能给一个程序使用吗?[特殊字符]
网络·nginx·docker