首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile没有安装python-dotenv库

Dockerfile没有安装python-dotenv库
EN

Stack Overflow用户
提问于 2020-11-01 10:38:57
回答 2查看 848关注 0票数 0

我的Dockerfile:

代码语言:javascript
复制
FROM python:3.9

WORKDIR /usr/src/app

RUN pip install python-dotenv
RUN pip install other_libraries...

在构建容器的过程中,会显示如下消息:

代码语言:javascript
复制
...
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.9python:3.8python-dotenv上试用过。

当然,当我运行docker-compose exec container_name pip install python-dotenv时,一切正常。

为什么Dockerfile中的RUN命令没有正确安装?

EN

回答 2

Stack Overflow用户

发布于 2020-11-01 11:03:40

循序渐进。

包含库(使用您的Dockerfile文件)的python

  • 构建镜像

代码语言:javascript
复制
docker build -t dotenv_image:1.0 .

  1. List images

代码语言:javascript
复制
docker images
代码语言:javascript
复制
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dotenv_image              1.0                 507f2d0505a0        4 minutes ago       891MB

↑好的,就在这里

  1. 运行带有sh外壳的容器,以便能够运行命令并检查容器

中的内容

代码语言:javascript
复制
docker run --rm -it --entrypoint sh dotenv_image:1.0

  1. 检查库

代码语言:javascript
复制
pip freeze
代码语言:javascript
复制
python-dotenv==0.15.0

库在这里

  1. 尝试使用库

代码语言:javascript
复制
python -c 'from dotenv import load_dotenv; print("ALL OK" if load_dotenv() else "CAN NOT LOAD")';
代码语言:javascript
复制
ALL OK

↑正输出

票数 1
EN

Stack Overflow用户

发布于 2020-11-01 11:04:39

我不使用docker-compose,但既然你的标题说你的Dockerfile不能正常工作,我可以告诉你这显然不是问题所在。您的Dockerfile似乎工作得很好:

代码语言:javascript
复制
>>> cat Dockerfile
FROM python:3.9
WORKDIR /usr/src/app
RUN pip install python-dotenv

>>> docker build -t so2 .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM python:3.9
3.9: Pulling from library/python
e4c3d3e4f7b0: Pull complete
101c41d0463b: Pull complete
8275efcd805f: Pull complete
751620502a7a: Pull complete
0a5e725150a2: Pull complete
397dba5694db: Pull complete
b1d09d0eabcb: Pull complete
475299e7c7f3: Pull complete
d2fe14d8e6bc: Pull complete
Digest: sha256:429b2fd1f6657e4176d81815dc9e66477d74f8cbf986883c024c9b97f7d4d5a6
Status: Downloaded newer image for python:3.9
 ---> 5336a27a9b1f
Step 2/3 : WORKDIR /usr/src/app
 ---> Running in 37b03142a9b6
Removing intermediate container 37b03142a9b6
 ---> 4677ab34ce84
Step 3/3 : RUN pip install python-dotenv
 ---> Running in e89d17be1a32
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 e89d17be1a32
 ---> 55d00eeae4b4
Successfully built 55d00eeae4b4
Successfully tagged so2:latest

>>> docker run -it so2 bash
root@d211989c4bd7:/usr/src/app# pip list
Package       Version
------------- -------
pip           20.2.4
python-dotenv 0.15.0
setuptools    50.3.2
wheel         0.35.1
root@d211989c4bd7:/usr/src/app# exit

>>> docker run -it so2
Python 3.9.0 (default, Oct 13 2020, 20:14:06)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from dotenv import load_dotenv; load_dotenv()
True
>>>

在我的MacBook pro终端窗口中,>>>代表我的提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64628209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档