Здравствуйте (я схожу с ума здесь) Я пытаюсь создать докер-контейнер с веб-приложением фляги + средой 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)