Docker 容器化
步骤
- 下载docker,开启docker服务
- 将项目需要安装的包完整填写在requirements.txt
- 在需要打包的根目录创建Dockerfile,配置其中内容
# 1. 使用官方 Python 基础镜像(可根据需要替换版本)
FROM python:3.10-slim
# 2. 设置环境变量(避免 .pyc 文件生成、开启日志直接输出)
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 3. 设置工作目录
WORKDIR /app
# 4. 安装系统依赖(可根据项目需要调整)
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
build-essential \
libjpeg-dev \
libpng-dev \
&& rm -rf /var/lib/apt/lists/*
# 5. 复制依赖文件先于代码(便于缓存构建)
COPY requirements.txt .
# 6. 安装 Python 依赖
RUN pip install --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# 7. 复制项目所有代码到容器
COPY . .
# 8. 暴露端口(如有 Web 服务)
EXPOSE 8000
# 9. 设置启动命令(请根据你的实际入口文件调整)
CMD ["python", "main.py"]
# 若是 FastAPI 或 Flask 服务,可改为:
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# CMD ["flask", "run", "--host=0.0.0.0", "--port=8000"
- 打包项目构建docker
docker build --no-cache -t my-fastapi .
部分 | 含义 |
---|---|
docker build | 构建 Docker 镜像的命令 |
--no-cache | 不使用缓存 ,每一层都从头开始构建(适用于确保最新代码或调试) |
-t my-fastapi | 给构建好的镜像起个名字叫 my-fastapi (-t 是 --tag 的缩写) |
. (点号) | 指定构建上下文为当前目录(当前目录中必须包含 Dockerfile ) |
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
- 创建项目容器并且开启
docker run -d -p 8000:8000 my-fastapi
- 若使用redis
# 开启redis容器
docker run -d --name my-redis -p 6379:6379 redis
# 创建 docker 网络
docker network create my-network
# 连接 Redis 到网络
docker network connect my-network my-redis
# 连接 FastAPI 到网络
docker network connect my-network determined_roentgen
- 清除缓存
类型 | 命令 | 描述 | 是否影响运行容器 | 是否建议使用 |
---|---|---|---|---|
容器清理 | docker container prune | 删除所有已停止的容器 | 否 | ✅ 是 |
镜像清理 | docker image prune | 删除所有悬挂镜像 (无 tag) | 否 | ✅ 是 |
网络清理 | docker network prune | 删除未使用的网络 (不会删默认网络) | 否 | ✅ 是 |
构建缓存清理 | docker builder prune | 删除构建中留下的中间层缓存 | 否 | ✅ 是 |
一键清理 | docker system prune | 安全清理无用容器、悬挂镜像、未使用网络和构建缓存 | 否 | ✅ 是 |
深度清理 | docker system prune -a | 清理所有未使用的镜像、容器、网络和缓存(慎用) | 否 | ⚠️ 慎用 |
加卷清理 | docker system prune --volumes | 还会删除未使用的数据卷 (数据持久化注意) | 否 | ⚠️ 慎用 |