2017-03-17 78 views
1

我想部署一个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)。 – melchoir55

回答