dockerfile解析

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
相关推荐
武子康11 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵4 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏4 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主4 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang4 天前
Docker 使用完整指南
运维·docker·容器
正经教主4 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
CodeStats4 天前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker
ai产品老杨4 天前
突破安防碎片化:基于 Docker 与边缘计算的 AI 视频智能化中台,如何通过 GB28181/RTSP 统一接入与全套源码交付实现二次开发自由?
人工智能·docker·边缘计算
正经教主4 天前
【docker基础】第十三周:学习总结与进阶方向【完结】
运维·docker·容器