簡體   English   中英

使用 venv 運行 docker 容器時找不到 gunicorn

[英]gunicorn not found when running a docker container with venv

我正在嘗試運行一個 Docker 容器,該容器抱怨錯誤消息: /bin/sh: gunicorn: not found 在沒有 Docker 的情況下本地啟動服務器工作正常。 並且構建圖像也可以正常工作。 我是 docker 新手,所以我不知道我的 Dockerfile 中是否有任何奇怪的東西。

我的 Dockerfile:

FROM python:3.7-alpine

RUN adduser -D teamreacher
WORKDIR /home/teamreacher

# copy and install dependencies
COPY ./requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip
RUN venv/bin/pip install -r requirements.txt

# copy the app
COPY . .
RUN chmod +x boot.sh

RUN chown -R teamreacher:teamreacher ./
USER teamreacher

# expose port and run server
EXPOSE 5000

RUN source venv/bin/activate
CMD gunicorn -b :5000 --access-logfile - --error-logfile - wsgi:app

還有我的 requirements.txt:

Flask==1.0.2
Flask-RESTful==0.3.6
Flask-SQLAlchemy==2.3.2
Flask-JWT==0.3.2
Flask-Cors==3.0.7
gunicorn==19.9.0

一個RUN命令創建一個層,就像在一個新的 shell 中運行命令一樣。 完成后,“外殼”退出。 所以后面的任何命令都不會受到影響。

您可以添加一個 shell 腳本 (startup.sh),例如,

#!/bin/sh
source venv/bin/activate
gunicorn -b :5000 --access-logfile - --error-logfile - wsgi:app

然后CMD ["./startup.sh"]

PS:

在 docker 容器中使用虛擬環境幾乎沒有興趣。 容器已經是一個孤立的環境,它應該只做一件事。

我的軟件包安裝如下所示:

RUN pip install -r requirements.txt --target=/app/python

我必須刪除--target=/app/python然后 pod 狀態開始顯示正在Running (已修復)。

所以對我來說解決方法是:

RUN pip install -r requirements.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM