V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwertyegg
V2EX  ›  Docker

Python 容器的 Dockerfile 为什么需要这一句 "COPY requirements.txt ."

  •  
  •   qwertyegg · 238 天前 · 578 次点击
    这是一个创建于 238 天前的主题,其中的信息可能已经有所发展或是发生改变。
    FROM python:3.9.2-alpine3.12
    
    WORKDIR /usr/src/app
    
    RUN pip install -r requirements.txt
    
    CMD [ "python", "api.py" ]
    

    我已经把文件夹映射到 /usr/src/app 里面了,文件夹包含了 requirements.txt(所以 /usr/src/app 里面也有这个文件?)

    错误提示

    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    

    修改为官方推荐的

    FROM python:3.9.2-alpine3.12
    
    WORKDIR /usr/src/app
    
    COPY requirements.txt .
    
    RUN pip install -r requirements.txt
    
    CMD [ "python", "api.py" ]
    

    就能成功 build 。请问为什么在第一种情况下找不到 requirements.txt

    5 条回复    2021-04-06 00:08:14 +08:00
    Phant0m
        1
    Phant0m   238 天前 via iPhone
    默认拉取回来的镜像内是没有 requirements.txt 这个文件的,镜像只包含必要的运行环境。
    julyclyde
        2
    julyclyde   236 天前
    “把文件夹映射”这一步是 build 步骤吗?
    qwertyegg
        3
    qwertyegg   236 天前
    @julyclyde 我是用的 docker-compose 映射的文件夹

    @Phant0m 不好意思,我没说清楚。我在 docker-compose 里面已经把包含 requirement.txt 和.py 的文件夹映射到 /usr/src/app 下了
    julyclyde
        4
    julyclyde   235 天前
    @qwertyegg 那你映射过之后 RUN ls 或者 RUN tree 一下看看里面是什么样子吧?
    qwertyegg
        5
    qwertyegg   235 天前
    @julyclyde 谢谢你的提示,我去试一试
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1469 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:24 · PVG 08:24 · LAX 16:24 · JFK 19:24
    ♥ Do have faith in what you're doing.