在 PyCharm 中创建并运行 Docker 容器完整指南

发布时间:2026/7/10 20:48:34

在 PyCharm 中创建并运行 Docker 容器完整指南 在 PyCharm 中创建并运行 Docker 容器完整指南 本文目标手把手教你在 PyCharm 中配置 Docker 环境编写Dockerfile和requirements.txt构建镜像并运行容器解决常见报错如 requirements.txt 逗号、标签缺失等查看镜像与容器状态Docker Desktop 项目结构你的项目目录应包含以下文件pythonproject/ ├── Dockerfile ├── main.py ├── requirements.txt └── (可选) .python-version 准备项目文件1.requirements.txtfastapi0.116.1 flask3.1.3 mcp1.28.0 pydantic~2.13.4 uvicorn~0.35.0⚠️注意不要加行尾逗号否则 pip 会报错ERROR: Invalid requirement: fastapi0.116.1, (from line 1 of requirements.txt)另外如果你的本地环境有pywin32不要把它写进 requirements.txt。因为pywin32只能在 Windows 上安装而 Docker 容器是 Linux 环境会导致构建失败ERROR: Could not find a version that satisfies the requirement pywin323122.main.pyprint(Hello from pythonproject!)3.Dockerfile# 1. 使用官方轻量级 Python 镜像 FROM python:3.11-slim # 2. 设置工作目录 WORKDIR /app # 3. 先复制依赖文件利用缓存加速构建 COPY requirements.txt . # 4. 安装依赖使用清华源加速 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 5. 复制项目源码包括 main.py 和其他文件 COPY . . # 6. 声明暴露端口 EXPOSE 8000 # 7. 运行命令 CMD [python, main.py]提示如果你未来要跑 FastAPI/Uvicorn记得把第 21 行改成CMD [uvicorn, main:app, --host, 0.0.0.0, --port, 8000] 步骤一构建 Docker 镜像打开 PyCharm 底部的Terminal终端确保你在项目根目录然后执行docker build-t my-main-app:1.0.构建过程会输出每一步的执行结果最终看到以下信息说明构建成功Step 7/7 : CMD [python, main.py] --- Running in bfe1710a3799 --- Removed intermediate container bfe1710a3799 --- 9c2fe8b20419 Successfully built 9c2fe8b20419 Successfully tagged my-main-app:1.0 步骤二查看镜像是否构建成功方法一命令行docker images你会看到REPOSITORY TAG IMAGE ID CREATED SIZE my-main-app 1.0 9c2fe8b20419 2 minutes ago 180MB python 3.11-slim xxxxxxxxxxxx 1 week ago 110MB方法二Docker Desktop 图形界面打开 Docker Desktop → 左侧菜单点击Images→ 你会看到刚才构建的my-main-app镜像。▶️ 步骤三运行容器在终端中执行docker run-p 8000:8000 my-main-app:1.0✅ 成功输出Hello from pythonproject!注意如果你没加:1.0Docker 默认找latest标签会报错Unable to find image my-main-app:latest locally✅ 解决方案要么指定:1.0要么重新打包时加:latestdocker build-t my-main-app:latest.注意*******为什么要学两种启动方式docker run适合单个容器如你现在这个 Python 脚本docker compose up -d适合多容器项目如 Web 服务 数据库如果你以后拉取一个完整的 Web 项目发现根目录有 compose.yaml那就不要再一个个 docker run了直接docker compose up -d一条命令全部启动 ✅ 步骤四清理无用容器Docker Desktop 中可能会有一些示例容器如practical_goldstine、bold_satoshi它们是 Docker 安装时自带的 Demo可以安全删除。命令行清理docker container prune# 或更彻底docker system prune 进阶改造成 FastAPI Web 服务如果你想让main.py变成一个真正的 Web 服务修改main.pyfromfastapiimportFastAPI appFastAPI()app.get(/)defread_root():return{message:Hello from FastAPI!}然后修改Dockerfile第 21 行CMD [uvicorn, main:app, --host, 0.0.0.0, --port, 8000]重新构建并运行docker build-t my-main-app:1.0.docker run-p 8000:8000 my-main-app:1.0浏览器访问http://localhost:8000→ 看到 JSON 响应即成功 常见问题 解决方案问题原因解决方案Invalid requirement: fastapi0.116.1,requirements.txt 行尾多了逗号删除所有行尾逗号Could not find a version that satisfies the requirement pywin32312pywin32只能在 Windows 上装Docker 是 Linux从 requirements.txt 中删除pywin32Unable to find image my-main-app:latest本地镜像标签是1.0不是latest命令中指定:1.0或重新打包为:latest容器运行后立即退出main.py是打印语句执行完就结束正常行为如需持续运行请用uvicorn或while True 附加技巧导出镜像为文件如果你想把镜像拷贝给别人或在其他机器上运行docker save my-main-app:1.0-o my-main-app.tar导入docker load-i my-main-app.tar✅ 总结你刚刚完成了✅ 编写 Dockerfile 和 requirements.txt✅ 构建镜像my-main-app:1.0✅ 运行容器并看到输出✅ 使用 Docker Desktop 查看镜像与容器✅ 解决常见报错逗号、标签、pywin32你已经正式迈入Docker 时代 下一步学习建议用docker-compose管理多容器如 Python MySQL学习如何挂载卷Volume实现代码热更新尝试将镜像推送到 Docker Hub学习.dockerignore优化构建速度

相关新闻