bash
FROM python:3.5.6
RUN mkdir /code_demo
ADD . /code_demo/
WORKDIR /code_demo
RUN pip3 install -r requirement -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --no-cache-dir
逐行解析
1、
dockerfile
FROM python:3.5.6
基础镜像
意思是:
-
从官方的 Python 3.5.6 环境开始构建
-
这个镜像里已经有:
- Python 3.5.6
- pip
- Linux 系统环境
📌 相当于:你拿了一台"已经装好 Python3.5.6 的虚拟机"
2、
dockerfile
RUN mkdir /code
👉 创建目录
意思是:
- 在容器里创建一个
/code文件夹 - 用来放你的项目代码
3、
dockerfile
ADD . /code/
👉 复制文件
意思是:
- 把你当前目录(Dockerfile 所在目录)的所有文件
- 复制到容器的
/code/目录
📌 相当于:
bash
cp -r 当前目录/* /code/
⚠️ 注意:
.是宿主机当前目录/code/是容器里的目录
4、
dockerfile
WORKDIR /code
👉 设置工作目录
意思是:
- 后续所有命令都在
/code目录执行
📌 相当于:
bash
cd /code
5、
dockerfile
RUN pip3 install -r requirement.txt \
-i http://mirrors.aliyun.com/pypi/simple/ \
--trusted-host mirrors.aliyun.com \
--no-cache-dir
👉 安装 Python 依赖
逐个解释:
✅ pip3 install -r requirement
- 从
requirement文件安装依赖
✅ -i http://mirrors.aliyun.com/pypi/simple/
👉 使用阿里云镜像源
作用:
- 加速下载(国内更快)
- 避免访问官方 PyPI 慢或失败
✅ --trusted-host mirrors.aliyun.com
👉 信任这个源(避免 HTTPS 警告)
✅ --no-cache-dir
👉 不缓存安装包
作用:
- 减小 Docker 镜像体积
- 避免留下 pip 缓存
❗1. ADD vs COPY
更推荐用:
dockerfile
COPY . /code/
👉 更安全、语义更清晰
❗2. 更规范写法
dockerfile
FROM python:3.5.6
WORKDIR /code
COPY . /code/
RUN pip3 install -r requirements.txt \
-i http://mirrors.aliyun.com/pypi/simple/ \
--trusted-host mirrors.aliyun.com \
--no-cache-dir