使用docker+devpi搭建本地pypi源的方法
前一段時間開發(fā)需要經(jīng)常使用 pip 下載,雖然把 pip 源改成了國內(nèi)源,但我對速度還是不滿意,更為重要的是集成
測試環(huán)境是離線的,要在集成測試環(huán)境開發(fā)顯然需要搭建自己的本地 pip 源。在使用 devpi 之前我曾使用過 pip2pi,但有個 bug 導(dǎo)致離線環(huán)境下的 tox 命令總是失敗,所以最后采用 devpi 搭建 pip 源。這里使用 docker 部署,方便又快速,如果不小心弄崩了也只需要重新運(yùn)行 docker 容器就好了。如果你的環(huán)境沒有安裝 docker 可以自行搜素安裝方法,比如 docker 社區(qū)的文檔 install docker。如果你是 Centos 用戶,可以使用以下方法安裝
sudo yum update sudo yum -y install docker sudo systemctl enable docker sudo systemctl start docker
接下來使用使用 docker 部署一個 Python 本地鏡像源,我們可以使用 docker hub 上已有的鏡像,我這里選擇的是
muccg/devpi 這個鏡像
# 設(shè)置 devpi 服務(wù)器管理員密碼 DEVPI_PASSWORD = 123 mkdir -p /src/docker/devpi mkdir /tmp/wheelhouse docker run -d --name devpi \ --publish 3141:3141 \ --volume /tmp/wheelhouse:/wheelhouse --volume /srv/docker/devpi:/data \ --env=DEVPI_PASSWORD=$DEVPI_PASSWORD \ --restart always \ muccg/docker-devpi
接著先在本地下載好所需的wheel包,requirements.txt文件內(nèi)容即為我們需要的 Python 庫列表
pip wheel --wheel-dir /tmp/wheelhouse -r requirements.txt
如果從 pip 源下載的庫已經(jīng)是 wheel 包的話文件將會被直接放在 /tmp/wheelhouse 內(nèi),如果是
tar 包,pip 會先 build 出 wheel 包,這可能需要一些時間。下載完成后 wheelhouse 內(nèi)容類似
于
ll /tmp/wheelhouse total 524K -rwxrwxrwx 1 rookie rookie 155K Apr 6 23:40 certifi-2019.3.9-py2.py3-none-any.whl -rwxrwxrwx 1 rookie rookie 131K Apr 6 23:40 chardet-3.0.4-py2.py3-none-any.whl -rwxrwxrwx 1 rookie rookie 58K Apr 6 23:40 idna-2.8-py2.py3-none-any.whl -rwxrwxrwx 1 rookie rookie 57K Apr 6 23:40 requests-2.21.0-py2.py3-none-any.whl -rwxrwxrwx 1 rookie rookie 116K Apr 6 23:40 urllib3-1.24.1-py2.py3-none-any.whl
下載完成后如果本地環(huán)境安裝了devpi客戶端,可以直接上傳 wheel 包,不過由于我們在創(chuàng)建容器時已經(jīng)
把 wheelhouse 文件夾掛載進(jìn)去,也可以在在容器里直接操作
# 進(jìn)入容器 docker exec -it -u root devpi bash # 登陸并上傳 devpi use http://<host_ip>:3141/root/public --set-cfg devpi login root 123 devpi upload --from-dir /wheelhouse
上傳完成后可以使用 http://<host_ip>:3141 查看 pip 本地源服務(wù)器狀態(tài)。
若要臨時使用可以使用 pip install 的 --index 和 --trusted-host 選項(xiàng)
pip install --index http://<host_ip>:3141/root/public/+simple/ \
--trusted-host <host_ip>
或者修改 pip.conf 文件永久使用
# vim ~/.pip/pip.conf [global] index_url = http://<host_ip>:3141/root/public/+simple/ trusted-host = <host_ip> [search] index = http://<host_ip>:3141/root/public/
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Docker如何在前端項(xiàng)目動態(tài)插入并使用變量
這篇文章主要為大家詳細(xì)介紹如何在Docker前端鏡像中設(shè)置變量以及使用變量的方法,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
關(guān)于Dockerfile鏡像制作完整實(shí)例
本文詳細(xì)介紹了如何使用Docker制作鏡像,并通過實(shí)際應(yīng)用發(fā)版展示了制作過程,主要內(nèi)容包括創(chuàng)建和啟動Docker容器的腳本(init.sh、start.sh、stop.sh、restart.sh),以及配置目錄,文章還討論了Docker容器IP地址的作用,并總結(jié)了制作新鏡像的基本步驟2024-11-11
idea鏈接不上虛擬機(jī)的docker里的mongodb問題及解決
這篇文章主要介紹了idea鏈接不上虛擬機(jī)的docker里的mongodb問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
使用GoogleContainerTools容器化jib構(gòu)建docker鏡像
這篇文章主要教大家如何使用GoogleContainerTools容器化jib構(gòu)建docker鏡像的實(shí)現(xiàn),有需要的的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
解決Docker x509 insecure registry的問題
這篇文章主要介紹了解決Docker x509 insecure registry的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
啟動docker的時候如何把參數(shù)傳遞給docker里面的項(xiàng)目(推薦)
這篇文章主要介紹了啟動docker的時候如何把參數(shù)傳遞給docker里面的項(xiàng)目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01

