python - 如何在容器中安装 pip 包
问题描述
我正在尝试在运行docker build的 docker 映像上设置 python 虚拟环境
当我运行docker build ..时终端输出正常,但是当我登录到我的容器时,我的虚拟环境中没有安装程序包。
#Dockerfile
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
RUN python3.8 get-pip.py
RUN pip install virtualenv
RUN virtualenv venv
RUN /home/ubuntu/venv/bin/pip install -r auto/requirements.txt
...
# Docker build command
docker build --no-cache -t auto-server:1.0 .
# Terminal output
Step 27/27 : RUN /home/ubuntu/venv/bin/pip install -r auto/requirements.txt
---> Running in d27dbb9a4c97
Collecting asgiref==3.2.10
Downloading asgiref-3.2.10-py3-none-any.whl (19 kB)
Collecting beautifulsoup4==4.9.1
Downloading beautifulsoup4-4.9.1-py3-none-any.whl (115 kB)
Collecting Django==3.1.1
Downloading Django-3.1.1-py3-none-any.whl (7.8 MB)
...
Successfully installed Django-3.1.1 asgiref-3.2.10 beautifulsoup4-4.9.1 fake-useragent-0.1.11 joblib-0.16.0 numpy-1.19.2 pandas-1.1.2 python-dateutil-2.8.1 pytz-2020.1 scikit-learn-0.23.2 scipy-1.5.2 six-1.15.0 sklearn-0.0 soupsieve-2.0.1 sqlparse-0.3.1 threadpoolctl-2.1.0
这是我在虚拟环境中列出包时得到的结果:
$ docker exec -ti auto-server bash
root@9c1f914d1b7b:/home/ubuntu# source venv/bin/activate
(venv) root@9c1f914d1b7b:/home/ubuntu# pip list
Package Version
---------- -------
pip 20.2.2
setuptools 49.6.0
wheel 0.35.1
WARNING: You are using pip version 20.2.2; however, version 20.2.3 is available.
You should consider upgrading via the '/home/ubuntu/venv/bin/python -m pip install --upgrade pip' command.
这是正确的方法吗?如何确保安装包?
解决方案
最后,在容器开发环境中不需要虚拟环境,我只是根据需要设置图像 python 环境。
# Dockerfile
...
RUN python3.8 get-pip.py
RUN pip install -r auto/requirements.txt
这不完全是我想要的,但它确实可以完成这项工作。
推荐阅读
- php - 如何在 laravel 的 darryldecode 购物车中设置最大数量?
- ruby-on-rails - Angular 网站无法在 Frefox 和 Safari 等不同浏览器上运行
- javascript - 如何在 react-native 中调用另一个纯类中的方法?
- javascript - 获取在对象字面量内定义的符号的值并迭代其值
- java - 如何使用 Apache POI 读取 Excel 文件中特定行的数据?
- c# - 关于将net core app部署到heroku服务器
- xml - Qweb PDF 有两个模型,可能吗?
- scala - akka-http HttpEntity.toStrict 在等待未完成数据时超时
- asciidoc - inlcude directive in asciidoc always evaluates relative
- javascript - How to implement amchart's lazy loading when getting data from an API