我正在尝试运行一个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
答案 0 :(得分:4)
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容器中使用虚拟环境几乎没有兴趣。容器已经是一个孤立的环境,应该只做一件事。