当前位置: 首页 > news >正文

38.docker启动python解释器,pycharm通过SSH服务直连

如果希望 PyCharm 通过 SSH 连接,需在容器内安装 SSH 服务
拉取 Python 3.11 镜像

docker pull python:3.11

创建Dockerfile文件
FROM python:3.11# 对于 Debian Bookworm 或更新版本,使用新的 sources 格式
RUN echo "deb [arch=amd64 signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \echo "deb [arch=amd64 signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \echo "deb [arch=amd64 signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list
# 安装SSH服务器和必要的工具
RUN apt-get update && \apt-get install -y openssh-server sudo openssh-client && \rm -rf /var/lib/apt/lists/*# 创建SSH目录
RUN mkdir /var/run/sshd# 允许root通过SSH登录(仅用于开发环境)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config# SSH登录修复
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd# 设置环境变量
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile# 暴露SSH端口
EXPOSE 22# 添加设置密码的脚本
COPY set_password.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/set_password.sh# 启动SSH服务和设置密码
CMD ["/usr/local/bin/set_password.sh"]

set_password.sh(通过环境变量动态设置密码)

#!/bin/bash# 设置root密码(如果环境变量ROOT_PASSWORD已设置)
if [ -n "$ROOT_PASSWORD" ]; thenecho "root:$ROOT_PASSWORD" | chpasswd
else# 默认密码(仅用于开发环境)echo "root:123456" | chpasswd
fi# 启动SSH服务
exec /usr/sbin/sshd -D

构建镜像 python-311-ssh:latest 

创建容器python-ssh,隐射端口3333:22,设置环境变量动态密码,然后本地pycharm工具连接该容器

docker run -d -p 2222:22 -e ROOT_PASSWORD=123456 --name python-ssh python-311-ssh

连接好后,启动本地代码,看缺哪些包,然后在容器内部使用 pip install 进行安装。

可以启动后,docker commit 命令将容器打成新的镜像 python-311-base:latest

在使用dockerfile文件:

FROM python-311-base:latest
WORKDIR /app
CMD ["sh", "-c", "/usr/local/bin/set_password.sh & exec /usr/local/bin/python3.11 ./pro/start.py"]

python-311-base:v1.0

再创建该容器:

docker run -itd --name pro_start -p 10088:10082 -p 2222:22  -e ROOT_PASSWORD=123456 -v /home/xiankejin/knowledge_model_nb:/app/pro python-311-base:v1.0

这个容器,既可以被本地的pycharm连接使用,又可以在服务器上部署项目使用。但是切忌不能同时启动,否则端口冲突。因为本地pycharm启动实质也是将代码上传到容器内启动。

http://www.dtcms.com/a/263587.html

相关文章:

  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • AlpineLinux安装docker
  • 我认知的AI宇宙系列第三期
  • 车载Tier1 supplier梳理
  • 使用 collected 向 TDengine 写入数据
  • 论文中用matplotlib画的图,如何保持大小一致。
  • OpenWrt | 使用 Docker 运行 iperf3
  • 前后端Dockerfile
  • 2025年 UI 自动化框架使用排行
  • GeoTools 结合 OpenLayers 实现属性查询(二)
  • 嵌入式原理与应用篇---常见基础知识(10)
  • 【软考高项论文】论信息系统项目的进度管理
  • Spring-事务和事务传播机制
  • DFMEA检查表模板下载
  • 简单的 PyTorch 示例,可视化和解释 weight decay 的作用
  • 云上攻防—Docker安全容器逃逸特权模式危险挂载
  • 【C++】简单学——模板初阶
  • tauri v2 开源项目学习(一)
  • PSQL 处理 BLOB 类型数据问题
  • 华为云Flexus+DeepSeek征文 | ​​华为云ModelArts Studio大模型与企业AI会议纪要场景的对接方案
  • 数据库事务全面指南:概念、语法、机制与最佳实践
  • C++ 快速回顾(五)
  • 【冷知识】Spring Boot 配置文件外置
  • SpringBoot -- 自动配置原理
  • Bessel位势方程求解步骤
  • STL简介+string模拟实现
  • 「Java案例」计算矩形面积
  • 大数据(3)-Hive
  • 【算法】动态规划:1137. 第 N 个泰波那契数
  • 初等变换 线性代数