Колба не подается в Anaconda / Docker Container - PullRequest
0 голосов
/ 15 февраля 2019

Здравствуйте (я схожу с ума здесь) Я пытаюсь создать докер-контейнер с веб-приложением фляги + средой miniconda, который затем развертывается в контейнере для веб-приложений в Azure

С сборкой докера сборка докера -т ана.контейнер успешно создан, но его запуск с помощью docker run ana

не приводит к тому, что ничего не происходит (нет ошибки, просто выполняется, но колб-сервер не запускается)

само приложение вызывается как оператор печатина самом деле отображаются

Я попробовал с PIP прежде, как описано здесь: https://www.martinnorin.se/exposing-python-machine-learning-models-using-flask-docker-and-azure/

, и это работает, но я не могу заставить его работать с anaconda ......

my environment.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

мой докер-файл

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)
...