我想部署一個pypi服務器來託管我們的內部包。我一直拉着我的頭髮在這個碼頭集裝箱內的pypi的行爲。本地pypi服務器告訴我403註冊包時禁止
Dockerfile
FROM python:3.5
RUN apt-get update
RUN pip install --upgrade pip
RUN pip install -U passlib pypiserver[cache]==1.2.0
RUN mkdir -p /src/pypi/packages
EXPOSE 8080
ADD ./htpasswd /src/pypi/htpasswd
CMD ["pypi-server", "-p 8080", "-P", "/src/pypi/htpasswd","/src/pypi/packages"]
非常簡單的,對不對?妹妹到碼頭文件當然有一個名爲htpasswd
包含用戶名/密碼對的文件。
如果我在本地(在Docker外部的環境中)完成了docker文件中定義的步驟,然後執行上面定義的命令,它將起作用!我可以根據它註冊套餐。
的PyPI運行Dockerfile外:
python setup.py register -r local
running register
running egg_info
writing top-level names to ah_model.egg-info/top_level.txt
writing dependency_links to ah_model.egg-info/dependency_links.txt
writing ah_model.egg-info/PKG-INFO
file foobar_utils.py (for module foobar_utils) not found
reading manifest file 'ah_model.egg-info/SOURCES.txt'
writing manifest file 'ah_model.egg-info/SOURCES.txt'
running check
Registering ah_model to http://localhost:8081
Server response (200): OK
但是,如果我建立並運行dockerfile,然後嘗試內部的註冊,這是行不通的:
的PyPI內泊塢窗運行:
python setup.py register -r local
running register
running egg_info
writing top-level names to ah_model.egg-info/top_level.txt
writing ah_model.egg-info/PKG-INFO
writing dependency_links to ah_model.egg-info/dependency_links.txt
file foobar_utils.py (for module foobar_utils) not found
reading manifest file 'ah_model.egg-info/SOURCES.txt'
writing manifest file 'ah_model.egg-info/SOURCES.txt'
running check
Registering ah_model to http://localhost:8080
Server response (403): Forbidden
有一些關於工作的PyPI是requi方式res在碼頭集裝箱內進行特殊調整?有沒有人自己試過這個?
UPDATE
看起來像搬運工容器偵聽端口8080:
[email protected]:/src/pypi# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/python3.5
它看起來像你想在端口8080使用該服務,這是不是在構建時運行的容器內。 –
您是否說由於我配置它的方式,碼頭容器沒有在8080上偵聽?如果是這樣,請參閱上面的更新。該容器似乎在聽8080.當我指向它的瀏覽器時,我看到pypi的正常啓動頁面(歡迎來到pypiserver)。 – melchoir55