[英]Running uwsgi inside a Docker container - Empty reply from server
我有一個簡單的 Dockerfile 用於 Flask 應用程序。 當我使用 Flask 開發服務器作為 ENTRYPOINT 構建它時,它運行正常,但是當我使用uwsgi
時,出現錯誤Empty reply from server
。 請注意,當我從主機運行相同的uwsgi
命令時,服務器會正確響應。
Dockerfile:
# sudo docker build -f Dockerfile-test-2 --rm -t cgtn-python-test-img .
# sudo docker run --rm -it --name cgtn-python-test -p 5000:5000 cgtn-python-test-img
FROM python:3-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential gcc libreadline-gplv2-dev libncursesw5-dev openssl \
libssl-dev libsqlite3-dev tk-dev libgdbm-dev \
libc6-dev libbz2-dev libffi-dev python3-dev python3-pip \
libxml2-dev libxslt1-dev zlib1g zlib1g-dev python3-lxml \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /cgtn
WORKDIR /cgtn
# Copy the requirements file into the image
COPY requirements.txt .
# Install the requirements in the image
RUN pip install --no-cache-dir -r requirements.txt
# for production use socket
ENV UWSGI_PROTOCOL="http" \
PYTHONPATH=/cgtn \
FLASK_APP="private_search_engine/server.py"
# Copy the rest of the sources from host to container
COPY . .
RUN chown -R www-data:www-data /cgtn
USER www-data:www-data
EXPOSE 5000
#ENTRYPOINT ["python"]
#CMD ["-m", "flask", "run", "--host", "0.0.0.0", "--port", "5000"]
ENTRYPOINT ["uwsgi"]
CMD ["--http", "0.0.0.0:5000", "--wsgi-file", "private_search_engine/server.py", "--callable", "app"]
正如 Dockerfile 中所評論的那樣,我使用以下方法構建圖像:
sudo docker build -f Dockerfile-test-2 --rm -t cgtn-python-test-img .
我用以下命令運行容器:
sudo docker run --rm -it --name cgtn-python-test -p 5000:5000 cgtn-python-test-img
當我使用評論的 ENTRYPOINT 和 CMD ( python -m
) 時,它起作用了。 當我在主機上運行 uwsgi 命令時,它起作用了(服務器響應請求)。 這是我在主機上運行的命令:
uwsgi --http 0.0.0.0:5000 --wsgi-file private_search_engine/server.py --callable app
但是當我像上面的腳本一樣使用 ENTRYPOINT 構建圖像時,請求時出現錯誤:
% curl -XGET 'http://0.0.0.0:5000/api/v1/search?q="*"'
curl: (52) Empty reply from server
容器內的uwsgi
我做錯了什么?
因此,我稍微更改了CMD
,現在可以使用了。 我用--module
替換--wsgi-file
。 我還添加了一個chdir
。
#...
ENTRYPOINT ["uwsgi"]
CMD ["--socket", "0.0.0.0:5000", \
"--chdir", "/cgtn", \
"--module", "private_search_engine.server:app", \
"--master", "--processes", "4", "--threads", "2", \
"--max-requests", "5000", \
"--harakiri", "20", \
"--vacuum", \
"--stats", "0.0.0.0:5001"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.