【问题标题】:Running a Flask app within a Docker container results in "./boot.sh: 2: exec: gunicorn: not found"在 Docker 容器中运行 Flask 应用程序会导致“./boot.sh: 2: exec: gunicorn: not found”
【发布时间】:2020-05-31 00:14:44
【问题描述】:

我正在尝试创建一个在 Docker 容器中运行的 Flask 应用程序,但我有一些复杂的依赖项,所以我从这个图像 https://hub.docker.com/r/continuumio/anaconda/ 构建。

我构建了图像 (一切正常...环境正常...)

docker build -t my_image:latest .

然后尝试运行它

docker run --name my_image -p 80:5000 --rm my_image:latest

我收到此错误:

./boot.sh: 2: exec: gunicorn: not found

这是我正在构建的目录:

my_template
--api.py
--boot.sh
--environment.yml
--Dockerfile

我有一个非常简单的烧瓶应用程序。 api.py

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/', methods=['GET'])
def hello_world():
    return jsonify({'message': 'Hello World'})

@app.route('/test', methods=['GET'])
def test():
    return jsonify({'test': 'test'})

if __name__ == "__main__":
    app.run(debug=True) # remember to set debug to False

environment.yml如下:

name: ox
channels:
  - conda-forge
  - defaults
dependencies:
  {---OMITTED FOR BREVITY---}
prefix: /home/me/anaconda3/envs/ox

Dockerfile如下:

FROM continuumio/miniconda:latest

WORKDIR /home/conda_flask_docker

COPY environment.yml ./
COPY api.py ./
COPY boot.sh ./

RUN chmod +x boot.sh

RUN conda env create -f environment.yml

RUN echo "source activate ox" > ~/.bashrc
ENV PATH /opt/conda/envs/ox/bin:$PATH

EXPOSE 5000

ENTRYPOINT ["./boot.sh"]

还有...boot.sh

#!/bin/sh
exec gunicorn -b :5000 --access-logfile - --error-logfile - api:app

【问题讨论】:

  • 已解决。我需要在 environment.yml 中添加 ``` - flask=1.1.2=pyh9f0ad1d_0 - gunicorn=20.0.4=py38h32f6830_1 ``` 到依赖项
  • 是的!我很高兴!

标签: python docker flask gunicorn


【解决方案1】:

我自己解决了这个问题...

我需要添加

 - flask=1.1.2=pyh9f0ad1d_0 
 - gunicorn=20.0.4=py38h32f6830_1 

到 environment.yml 的 dependencies 部分。在添加 Flask 和 gunicorn 之前,我曾使用 conda env export > environment.yml 构建我的 environment.yml

如果不这样做,通过 Dockerfile 中的RUN 命令添加 gunicorn 应该可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2022-01-18
    • 2021-08-29
    • 2020-03-29
    • 2022-07-07
    • 1970-01-01
    • 2022-01-15
    • 2018-06-06
    相关资源
    最近更新 更多