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
相关推荐
yuanzhengme20 小时前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
国产化创客21 小时前
RuView开源项目Docker+ESP32完整部署手册
物联网·docker·容器·开源·信息与通信·智能硬件·wifi-csi
SL-staff1 天前
2026企业文档选型白皮书:功能、技术栈、私有化部署与采购建议
spring cloud·docker·微服务·kubernetes·开源·私有化部署·企业文档
曦月合一1 天前
树莓派Debian 12 (bookworm) 系统 中Docker中运行mysql的流程
mysql·docker·容器
涛声依旧393161 天前
Nginx+Docker 部署HTTPS站点+身份认证 完整实操一键部署脚本
nginx·docker·https
南宫萧幕1 天前
基于上一篇文章VMware+openweb UI+ollama+docker的bug问题总结
docker·容器·bug·openweb ui
杨浦老苏1 天前
开源数据库备份工具Databasus
数据库·docker·备份·群晖
晨旭缘1 天前
docker compose升级版本问题:KeyError_ ‘ContainerConfig‘
docker·容器·eureka
涛声依旧393161 天前
运维项目实战:Nginx+Docker 部署HTTPS站点+身份认证
运维·nginx·docker·云原生·容器·https
黑风风1 天前
一次 Docker 磁盘占用排查与迁移的完整复盘
docker·容器·eureka