我想部署一个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
+0
它看起来像你想在端口8080使用该服务,这是不是在构建时运行的容器内。 –
+0
您是否说由于我配置它的方式,码头容器没有在8080上侦听?如果是这样,请参阅上面的更新。该容器似乎在听8080.当我指向它的浏览器时,我看到pypi的正常启动页面(欢迎来到pypiserver)。 –