☰
在 PyCharm 中创建并运行 Docker 容器完整指南
2026/10/14 20:38:12 网站建设 项目流程

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

🎯 本文目标

手把手教你:

  1. 在 PyCharm 中配置 Docker 环境
  2. 编写Dockerfile和requirements.txt
  3. 构建镜像并运行容器
  4. 解决常见报错(如 requirements.txt 逗号、标签缺失等)
  5. 查看镜像与容器状态(Docker Desktop)

📁 项目结构

你的项目目录应包含以下文件:

pythonproject/ ├── Dockerfile ├── main.py ├── requirements.txt └── (可选) .python-version

📝 准备项目文件

1.requirements.txt

fastapi==0.116.1 flask==3.1.3 mcp==1.28.0 pydantic~=2.13.4 uvicorn~=0.35.0

⚠️注意:不要加行尾逗号!否则 pip 会报错:

ERROR: Invalid requirement: 'fastapi==0.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 pywin32==312

2.main.py

print("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.0,Docker 默认找latest标签,会报错:

Unable to find image 'my-main-app:latest' locally

✅ 解决方案:要么指定:1.0,要么重新打包时加:latest:

docker 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.py:

fromfastapiimportFastAPI app=FastAPI()@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: 'fastapi==0.116.1,'requirements.txt 行尾多了逗号删除所有行尾逗号
Could not find a version that satisfies the requirement pywin32==312pywin32只能在 Windows 上装,Docker 是 Linux从 requirements.txt 中删除pywin32
Unable 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优化构建速度

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询