繁体   English   中英

Docker Image Conda环境和Flask

[英]Docker image conda environment and flask

我想让一个Flask API在一个conda环境下运行到docker中。

看来我可以从.yml文件安装conda环境。

但是当我执行docker run时,我无法运行该应用程序。

我只是有关于不存在的文件的错误

exec source activate flask_env && python app.py failed: No such file or directory

flask API基于一个简单的示例:

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

Dockerfile是:

FROM continuumio/miniconda3:latest

WORKDIR /app

# Install myapp requirements
COPY environment.yml /app/environment.yml
RUN conda config --add channels conda-forge \
    && conda env create -n myapp -f environment.yml \
    && rm -rf /opt/conda/pkgs/*

# Copy all files after to avoid rebuild the conda env each time
COPY . /app/

# activate the myapp environment
ENV PATH /opt/conda/envs/myapp/bin:$PATH

# Launch the API
CMD [ "source activate flask_env && python app.py" ]

环境文件是:

name: myapp
channels:
  - conda-forge
  - defaults
dependencies:
  - flask=1.0.2
  - python=3.7.3

我尝试了很多事情,但无法使其正常工作。 我错过了什么 ?

谢谢

看到这个

CMD指令具有三种形式:

CMD [“ executable”,“ param1”,“ param2”](执行形式,这是首选形式)
CMD [“ param1”,“ param2”](作为ENTRYPOINT的默认参数)
CMD命令param1 param2(shell形式)

在这里,你CMD作为参数ENTRYPOINT (见 ),所以你必须使用下一个格式:

CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

但是,您的命令中包含&& ,因此您必须启用json格式的shell。 所以对于您的情况,这可能是下一个,仅供参考:

CMD ["bash", "-c", "source activate flask_env && python app.py"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM