Anaconda / Docker容器中未盛装烧瓶

时间:2019-02-14 22:06:48

标签: python azure docker flask anaconda

你好(我在这里疯了) 我正在尝试使用flask Web应用程序+ miniconda环境创建docker容器,然后将其部署到Azure中用于Web应用程序的容器

使用docker build docker build -t ana。 容器已成功创建,但使用 docker run ana

什么也没发生(没有错误,只是在运行,但烧瓶服务器未启动)

该应用程序本身被称为实际显示打印语句

我之前尝试过使用PIP进行以下操作: https://www.martinnorin.se/exposing-python-machine-learning-models-using-flask-docker-and-azure/

它可以工作,但是我无法使其与anaconda一起工作……

我的环境。yml

name: ana
channels:
  - defaults
dependencies:
  - blas=1.0=mkl
  - certifi=2018.11.29=py36_0
  - click=7.0=py36_0
  - flask=1.0.2=py36_1
  - intel-openmp=2019.1=144
  - itsdangerous=1.1.0=py36_0
  - jinja2=2.10=py36_0
  - pip=19.0.1=py36_0
  - pycparser=2.19=py36_0
  - python-dateutil=2.7.5=py36_0
  - pytz=2018.9=py36_0
  - setuptools=40.7.3=py36_0
  - six=1.12.0=py36_0
  - werkzeug=0.14.1=py36_0
  - wheel=0.32.3=py36_0
  - waitress=1.2.0=py36_0
prefix: C:\Users\jji309\AppData\Local\conda\conda\envs\ana

我的dockerfile

FROM continuumio/miniconda3

# Set the ENTRYPOINT to use bash
# (this is also where you’d set SHELL,
# if your version of docker supports this)
ENTRYPOINT [ "/bin/bash", "-c" ]

# Conda supports delegating to pip to install dependencies
# that aren’t available in anaconda or need to be compiled
# for other reasons. In our case, we need psycopg compiled
# with SSL support. These commands install prereqs necessary
# to build psycopg.
#RUN apt-get update && apt-get install -y \
# libpq-dev \
# build-essential \
#&& rm -rf /var/lib/apt/lists/*

# Use the environment.yml to create the conda environment.
 ADD environment.yml /tmp/environment.yml
 WORKDIR /tmp
RUN [ "conda", "env", "create" ]

ADD . /code

# Use bash to source our new environment for setting up
# private dependencies—note that /bin/bash is called in
# exec mode directly
ADD setup.py /code/shared/setup.py
WORKDIR /code/shared
RUN [ "/bin/bash", "-c", "source activate ana && python setup.py develop" ]

ADD setup.py /code/setup.py
WORKDIR /code
RUN [ "/bin/bash", "-c", "source activate ana && python setup.py develop" ]

# We set ENTRYPOINT, so while we still use exec mode, we don’t
# explicitly call /bin/bash
ADD app.py /code/app.py
EXPOSE 5000
CMD [ "source activate ana && exec python /code/app.py" ]

我的app.py

from flask import Flask
from waitress import serve
from flask import request
import json

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

@app.route("/do_post", methods=['POST'])
def post_method():
    json = request.get_json()
    name = json["name"]
    age = json["age"]
    return "Hello {}. You're {} years old.".format(name, age)   

# This is important so that the server will run when the docker container has been started. 
# Host=0.0.0.0 needs to be provided to make the server publicly available.
if __name__ == "__main__":
    serve(app,host='0.0.0.0', port=5000)

0 个答案:

没有答案