我正在尝试创建一个本地的pip2pi回购,然后通过Nginx提供服务。我已经成功地创建了回购和拥有所有的车轮文件,我想在我的本地机器。它们的位置如下:
/home/user/code/misc/pip-packs/simple
\
---index.html
--- amqp
\
-------- index.html
-------- amqp-1.4.6-py2-none-any.whl
--- django
\
-------- index.html
-------- Django-1.9.3-py2.py3-none-any.whl
... ETC现在,为了提供文件,我使用Nginx上的码头,简单地使用正式的Nginx对接图像。我像这样操作容器:
docker run --name pypi-nginx -p 80:80 \
-v /home/user/code/misc/pip-packs/simple:/usr/share/nginx/html \
-d nginx我可以打开localhost并在root (/)上看到index.html,我可以单击一个链接(例如amqp ),然后为amqp-1.4.6-py2-no-any.whl文件获取一个链接。当我点击链接,我希望下载启动。然而,我从Nginx那里得到404页。
THe文件确实存在,因为我可以运行:
docker exec -it pypi-nginx /bin/bash然后是ls和/usr/share/nginx/html目录,并查看voulume中的所有文件。
此外,我还可以在本地运行pip安装AMQP-1.4.6py2-no.whl,所以我知道这是一个实际的车轮文件。
Nginx的官方日志错误是:
2016/05/20 14:48:01 [error] 7#7: *1 open() "/usr/share/nginx/html/funcsigs/funcsigs-0.4-py2.py3-none-any.whl" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /funcsigs/funcsigs-0.4-py2.py3-none-any.whl HTTP/1.1", host: "localhost", referrer: "http://localhost/funcsigs/"但它却为每一家公司的索引文件提供服务。我使用的nginx conf文件是容器中的标准文件。如果需要的话,我可以把这些寄出去。
发布于 2016-05-20 17:27:22
在目录/home/user/code/misc/ pip2pi /中,pip2pi存储它下载的包。所以在/home/user/code/misc//您有
/home/user/code/misc/pip-packs/
\
--- amqp-1.4.6-py2-none-any.whl
--- Django-1.9.3-py2.py3-none-any.whl
--- ETC然后,就像上面问题中描述的简单目录一样,每个回购文件夹都应该有轮子文件,但是有一个404。好的,我忽略了dir2pi pip-packs/命令,它只创建符号链接,不复制轮子文件。因此,当我将卷安装到容器时,所有符号链接指向的实际轮转文件从未被复制到容器中。
Django文件夹(packages/simple/django)的'ls -al‘输出是:
drwxr-xr-x 2 bdew70 bdew70 4096 May 20 11:02 .
drwxr-xr-x 64 bdew70 bdew70 4096 May 20 11:02 ..
lrwxrwxrwx 1 bdew70 bdew70 39 May 20 11:02 Django-1.9.3-py2.py3-none-any.whl -> ../../Django-1.9.3-py2.py3-none-any.whl
-rwxr-xr-x 1 bdew70 bdew70 88 May 20 11:02 index.html解决方案是创建一个Dockerfile,然后将轮转文件与/usr/ ADD /nginx/ html /文件夹一起发送到/user/share/nginx/文件夹。Dockerfile应该如下所示:
FROM nginx
ADD packages/simple /usr/share/nginx/html/
ADD packages /usr/share/nginx故事的寓意是在调查文件问题时使用'-al‘(或为ls创建别名),并且要小心Docker容器卷中的符号链接。特别是如果符号链接是相对的,并且是以../../some-file形式出现的。
https://stackoverflow.com/questions/37350212
复制相似问题