当前位置: 首页 > 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.lqws.cn/news/581455.html

相关文章:

  • 物联网基础
  • 【Mars3d】支持的basemaps数组与layers数组的坐标系列举
  • 电脑开机加速工具,优化启动项管理
  • 感受新复古主义独特魅力,新大洲本田NS150LA上市
  • Docker从部署到实战
  • ADB 安装 APK 及处理安装弹窗的方法
  • 人工智能基石:SVM支持向量机全解析(附Python实战)
  • SpringBoot+ShardingSphere-分库分表教程(二)
  • 如何防止恶意软件感染服务器:防病毒与EDR方案
  • creo 2.0学习笔记
  • 云上攻防—Docker安全容器逃逸特权模式危险挂载
  • DORIS数据备份(HDFS)
  • 对称非对称加密,https和http,https通讯原理,Charles抓包原理
  • 非常详细版: dd.device.geolocation 钉钉微应用获取定位,移动端 PC端都操作,Vue实现钉钉微应用获取精准定位并渲染在地图组件上
  • GeoTools 结合 OpenLayers 实现属性查询(二)
  • Python UI自动化演进格局:从传统库到AI驱动的智能代理
  • (4)pytest-fixture
  • 04_MySQL 通过 Docker 在同一个服务器上搭建主从集群(一主一从)
  • MetaGPT: 多智能体框架(还没装好...)
  • 大数据系统架构实践(三):Hbase集群部署
  • 机器学习06 集成学习
  • R1-Searcher使用强化学习增强语言模型解决问题的搜索能力
  • 手机屏暗点缺陷修复及相关液晶线路激光修复原理
  • 超大js文件多层级引用缓存在网络较差的时候无法调用使用问题
  • 设计模式-单例模式
  • FPGA矩阵算法实现
  • PHP安装使用教程
  • 如何在Linux服务器中配置Oracle数据库
  • 大数据(4)-spark
  • vue3 + luckysheet 实现在线编辑Excel