Skip to main content

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还会删除未使用的数据卷 (数据持久化注意)⚠️ 慎用