你好(我在这里疯了) 我正在尝试使用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)