运行在Docker中的uwsgi无法find初始化文件
我使用Ubuntu 14.04和Docker 1.0.1。 我有一个包含python 2.7.6和uwsgi 2.0.10的容器。 我创build了Dockerfile:
FROM romeus/python MAINTAINER Me <my email> ENV REFRESHED_AT 2015-03-17 RUN pip install uwsgi RUN pip install Django RUN mkdir -p /var/www RUN mkdir -p /var/conf VOLUME ["/var/www"] ADD uwsgi.conf /var/conf/ CMD ["uwsgi", "--ini", "/var/conf/uswgi.conf"]
下面我把我的uswgi.conf:
[uwsgi] http-socket = 0.0.0.0:8080 wsgi-file = /var/www/test.py processes = 4 threads = 2 stats = 0.0.0.0:8081
当我login容器时:
docker run --rm -it -p 8080 -p 8081 -v /home/hedin/projects/business /project/test/www:/var/www/ romeus/django /bin/bash
然后用ini-file运行uwsgi:
uwsgi --ini /var/conf/uwsgi.conf
它开始和按预期工作。
但是当我运行它时:
docker run --rm -it -p 8080 -p 8081 -v /home/hedin/projects/business/project/test/www:/var/www/ romeus/django
这是错误的问题:/var/conf/uswgi.conf的realpath()失败:没有这样的文件或目录[core / utils.c line 3607]
有人知道有什么问题吗?
PS我改变了我的Dockerfile的尾巴:
COPY uwsgi.conf /var/conf/ VOLUME ["/var/www"] CMD ["strace", "-f", "uwsgi", "--ini", "/var/conf/uswgi.conf"]
这是strace输出的最后几行:
lstat("/var/conf/uswgi.conf", 0x7fff9dcc6a40) = -1 ENOENT (No such file or directory) lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/var/conf", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/var/conf/uswgi.conf", 0x7fff9dcc59e0) = -1 ENOENT (No such file or directory) write(2, "realpath() of /var/conf/uswgi.co"..., 94realpath() of /var/conf/uswgi.conf failed: No such file or directory [core/utils.c line 3607] ) = 94 exit_group(1) = ? +++ exited with 1 +++
所以看起来在命令运行时文件不存在。 有什么想法吗 ?
我犯了一个愚蠢的错误。 文件名必须是“uwsgi.conf”,而不是“uswgi.conf”。 当我修好的时候,一切都开始按预期工作。