【发布时间】:2020-11-01 11:12:56
【问题描述】:
我的 Dockerfile:
FROM python:3.9
WORKDIR /usr/src/app
RUN pip install python-dotenv
RUN pip install other_libraries...
在构建容器期间,显示消息:
...
Step 3/4 : RUN pip install python-dotenv
---> Running in 5fffd3fe4042
Collecting python-dotenv
Downloading python_dotenv-0.15.0-py2.py3-none-any.whl (18 kB)
Installing collected packages: python-dotenv
Successfully installed python-dotenv-0.15.0
Removing intermediate container 5fffd3fe4042
---> 2cd0942f520c
...
但是当我运行docker-compose exec container_name pip list 时,列表中没有python-dotenv 库。
我在 0.14 或 0.15 版本中尝试使用 python:3.9、python:3.8 和 python-dotenv。
当然,当我运行docker-compose exec container_name pip install python-dotenv 时,一切正常。
为什么 Dockerfile 中的RUN 命令没有正确安装?
【问题讨论】:
-
据我所知,Dockerfile 用于构建映像,而不是容器。构建镜像后,您需要使用构建的镜像运行容器。为什么你使用 docker-compose?你有一些 yaml 配置吗?
-
我刚刚构建并运行了您的映像,
pip list向我展示了 4 个包,其中一个是python-dotenv 0.15.0。如果我启动 Python,则执行from dotenv import load_dotenv; load_dotenv()可以工作并打印True。 - 我不使用 docker-compose,所以如果您甚至没有正确运行或查看容器,我不知道如何为您提供帮助。 - 简而言之......我认为你的 Dockerfile 很好。 -
好的,我的 docker-compose 使用了旧服务。
-
如果您还显示了 docker-compose YAML 文件会有所帮助。也许您开始使用 docker-compose 的容器不是来自您使用 python-dotenv 构建的同一图像。正如其他人所提到的,您的 Dockerfile RUN 命令应该没问题。
标签: python docker docker-compose dotenv