Pycharm配置Docker容器Python解释器并容器内调试程序
·
Pycharm专业版可以配置SSH Remote连接远端服务器并在远端服务器上调试程序(搜索SSH Interpreter会有很多教程)。但如果我们想在本地电脑上通过Pycharm运行Docker容器并在Pycharm中使用debug方式启动Flask服务脚本(如start_server.py),在使用Postman请求容器内服务接口的时候,可以通过在Pycharm打断点的方式查看各个环节的状态。应该怎么实现呢?
准备
- 以Macbook环境为例,需要安装docker desktop并启动docker
- 需要有一个支持程序运行环境的Docker镜像(如果本地没镜像需要先docker pull xxx),其中包含运行服务所需的Python包
- Pycharm专业版(其他非专业版未测试)
- 服务代码
Pycharm配置
- 新增python interpreter
左上角Pycharm -> Settings ->Project: xxx -> Python Interpreter ->点击小齿轮⚙ -> Add
- 选择docker 或docker compose,本处以docker compose为例

Server指Docker程序,如果本地运行docker了,点击New可以自动连接;
Configuration files就是需要的docker compose文件(通常是yml类型的文件),需要对docker compose启动方式有所了解。配置可以是相对路径;
Service是compose文件中配置的服务名,编辑好compose文件后可以在下拉菜单中选择。 - 点击OK即可完成远程python解释器环境配置(过程可能会持续3-5min)
- compose文件参考示例如下:
version: '3.10'
services:
flask:
image: {打包好的服务镜像名} # 一般需要通过Dockerfile运行docker build命令打包镜像
ports:
- "15000:5000" # 容器中服务启动端口是5000(在Dokerfile中说明),容器对外(macbook)暴露端口是15000
environment: # 定义环境变量
OPEN_API_KEY: "my_api_key"
# command: ["sh", "-c", "cd /app&& python3 start_api.py"] 注意要注释掉默认的启动命令,
# 否则在容器启动的时候会自动运行服务
dockerfile参考示例
FROM {python 基础镜像包}
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt -i
COPY ./app /app
EXPOSE 5000
CMD ["sh", "-c", "tail -f /dev/null"]
Dockerfile中最后运行的命令表示容器在sh命令行pending住
- 配置服务启动脚本
点击Edit Configurations
配置python远端解释器,配置启动脚本路径,配置工作目录;
Path mappings需要设置本地app路径和容器内app路径(图中未设置,请注意增加)如/Users/q/Documents/app=/app;
点击“OK”既可以通过debug模式运行start_api.py脚本并在程序代码中打断点,postman访问 “http://127.0.0.1:15000”即可请求服务接口
更多推荐
所有评论(0)