欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署

基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署

2024/10/25 1:33:44 来源:https://blog.csdn.net/weixin_44585288/article/details/140575740  浏览:    关键词:基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署

文章目录

    • 摘要
    • 项目结构
    • 项目开发
    • 项目上线
    • 参考文章

在这里插入图片描述

摘要

本文介绍了如何在Windows 10系统上使用PyCharm专业版2024.1,通过Docker容器在阿里云CentOS 7.9服务器上进行Python项目的开发和生产部署。文章详细阐述了项目结构的搭建、PyCharm的使用技巧、以及如何将开发项目部署为生产镜像,并利用Pycharm和容器卷挂载技术实现项目结构和内容在本地、远程服务器、Docker容器内部的一致性。文章有助于读者更好地理解和实践在Windows系统上使用PyCharm连接Docker容器进行Python项目开发与部署。

项目结构

假设你的项目名称为 flask_project,项目结构如下:

flask_project/
│
├── DockerfileBase       # 基础 Dockerfile,用于构建开发环境
├── DockerfileProd       # 生产环境 Dockerfile,基于基础镜像
├── app/
│   ├── __init__.py
│   ├── app.py            # Flask 应用的主文件
├── requirements.txt      # 项目依赖文件
└── README.md             # 项目说明文件
  1. DockerfileBase

    在项目的根目录下创建一个名为 DockerfileBase 的文件,并写入以下内容:

    # 使用官方 Python 3.8 镜像
    FROM python:3.8# 安装设置ssh服务
    RUN apt-get update && \apt-get install -y openssh-server openssh-client && \echo root:abcdef123456 | chpasswd && \echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    # 创建并设置权限
    RUN mkdir -p /run/sshd && \chown root:root /run/sshd && \chmod 755 /run/sshd# 安装必要的软件包
    RUN apt-get install -y sudo vim# 设置系统时区为上海
    RUN rm -f /etc/localtime
    RUN ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone# 暴露 SSH 端口
    EXPOSE 22# 启动 SSH 服务
    CMD ["/usr/sbin/sshd", "-D"]
    
  2. DockerfileProd

    在项目的根目录下创建一个名为 DockerfileProd 的文件,并写入以下内容:

    # 使用自己构建 Python 3.8 镜像作为基础镜像
    FROM python-3.8-base:1.0# 设置容器内的工作目录为 /opt/project/flask_project
    WORKDIR /opt/project/flask_project# 将当前目录下的所有文件复制到容器的工作目录
    COPY . /opt/project/flask_project# 安装 Flask 应用所需的依赖
    RUN pip install --no-cache-dir -r requirements.txt# 暴露 Flask 应用运行的端口 5000
    EXPOSE 5000# 定义容器启动时执行的命令来运行 Flask 应用
    CMD ["python", "./app.py"]
    
  3. app/app.py

    app 目录下创建一个名为 app.py 的文件,并写入以下 Flask 应用代码:

    from flask import Flaskapp = Flask(__name__)@app.route('/')
    def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
    
  4. app/requirements.txt

    app 目录下创建一个名为 requirements.txt 的文件,并写入以下内容:

    Flask==3.0.3
    
  5. README.md

    README.md 写入项目相关的说明:

    基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署
    

项目开发

  1. 构建基础镜像
    首先,你需要创建一个基础的 Docker 镜像,这个镜像将包含你开发环境中所需的所有基本组件。

    • 登录远程服务器
    • 新建DockerfileBase文件
      mkdir /opt/project/flask_project
      touch DockerfileBase
      
    • 写入以下内容到 DockerfileBase
      # 使用官方 Python 3.8 镜像
      FROM python:3.8# 安装设置ssh服务
      RUN apt-get update && \apt-get install -y openssh-server openssh-client && \echo root:abcdef123456 | chpasswd && \echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
      # 创建并设置权限
      RUN mkdir -p /run/sshd && \chown root:root /run/sshd && \chmod 755 /run/sshd# 安装必要的软件包
      RUN apt-get install -y sudo vim# 设置系统时区为上海
      RUN rm -f /etc/localtime
      RUN ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone# 暴露 SSH 端口
      EXPOSE 22# 启动 SSH 服务
      CMD ["/usr/sbin/sshd", "-D"]
      
    • 构建基础镜像
      docker build -f DockerfileBase -t python-3.8-base:1.0 .
      
  2. 运行开发环境容器
    使用基础镜像运行开发环境容器,并映射必要的端口。

    docker run -d \--name python-dev \-p 5000:5000  \-p 10022:22 \-v /opt/project/flask_project:/opt/project/flask_project \python-3.8-base:1.0
    
  3. Pycharm新建本地项目
    在 PyCharm 中创建一个新的项目:

    • 点击 “File”(文件)> “New Project”(新建项目)
    • 项目名称:flask_project
    • 项目位置:E:\opt\project
    • Python 虚拟环境位置:E:\opt\project\flask_project\.venv
      在这里插入图片描述
    • 注意:Python虚拟环境不重要,下面会修改Python解析器为远程服务器Docker容器解释器。
  4. Pycharm远程连接开发容器

    • 配置远程解释器
      • 填写配置信息如下

        配置项
        Host(主机地址)your-service-ip
        Port(端口)10022
        Username(用户名)root
        Password(密码)abcdef123456
        Sync Folder(文件同步目录)/opt/project/flask_project
      • 配置过程截图如下
        在这里插入图片描述 在这里插入图片描述

    • 修改项目同步配置
      移除E:\opt\project\flask_project\.venv 向服务器同步
      在这里插入图片描述
      在这里插入图片描述
  5. 安装项目依赖

    • 登录远程容器服务器
      Pycharm中点击Terminal, 出现终端后点击向下三角, 出现上面配置的远程解释器所在服务器信息, 选择进入服务器。
      在这里插入图片描述

    • 创建 requirements.txt

      cd /opt/project/flask_project
      touch  requirements.txt
      
    • 写入以下内容

      Flask==3.0.3
      
    • 安装项目依赖

      pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
      
  6. 创建应用
    在项目中创建Flask应用目录app/和文件app.py

    • 项目结构如下:

      flask_project/
      │
      ├── DockerfileBase       # 基础 Dockerfile,用于构建开发环境
      ├── app/
      │   ├── __init__.py
      │   ├── app.py            # Flask 应用的主文件
      └── requirements.txt      # 项目依赖文件
      
    • 文件内容
      写入以下内容到app/app.py

      from flask import Flaskapp = Flask(__name__)@app.route('/')
      def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
      

      如下图所示
      在这里插入图片描述

    • 运行应用
      在 PyCharm 中右键运行 app.py 文件。
      在这里插入图片描述

  7. 访问应用

    • 访问 http://<server-ip>:5000 来查看 Flask 应用的输出。
      在这里插入图片描述

项目上线

  1. 构建生产镜像
    首先,你需要创建一个生产的 Docker 镜像,这个镜像将包含你开发环境中所需的所有基本组件。

    • 登录远程服务器
    • 新建DockerfileProd文件
      mkdir /opt/project/flask_project
      touch DockerfileProd
      
    • 写入以下内容到 DockerfileProd
      # 使用自己构建 Python 3.8 镜像作为基础镜像
      FROM python-3.8-base:1.0# 设置容器内的工作目录为 /opt/project/flask_project
      WORKDIR /opt/project/flask_project# 将当前目录下的所有文件复制到容器的工作目录
      COPY . /opt/project/flask_project# 安装 Flask 应用所需的依赖
      RUN pip install --no-cache-dir -r requirements.txt# 暴露 Flask 应用运行的端口 5000
      EXPOSE 5000# 定义容器启动时执行的命令来运行 Flask 应用
      CMD ["python", "./app.py"]
      
    • 构建基础镜像
      docker build -f DockerfileProd -t flask-project-python-3.8:1.0 .
      
  2. 运行容器
    使用生产镜像运行生产环境容器,并映射必要的端口。

    docker run -d \--name flask-project-prod \-p 10000:5000  \flask-project-python-3.8:1.0
    
  3. 访问应用
    访问 http://<server-ip>:10000 来查看 Flask 应用的输出。

  4. 重启、停止和删除容器:

    当你希望重启停止并删除容器时,可以使用以下命令:

    # 重启容器
    docker restart flask-prod-prod
    # 停止容器
    docker stop flask-prod-prod
    # 删除容器
    docker rm flask-project-prod
    

参考文章

Dockerfile 简介与 镜像构建指南
pycharm 远程连接docker容器调试程序
pycharm如何连接远程服务器的docker容器进行运行和调试代码(一)
PyCahrm部署Docker镜像解释器
Flask+Gunicorn+Docker最佳实践
Docker+Flask+Gunicorn上线项目

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com