docker部署Python-Flask后端

docker环境部署入门

最近导师要求将自己的后端环境打包成一个容器上传到阿里云服务器上面。要装成容器的原因是服务器上面的配置环境是很复杂的,为此就要单独配置一个环境来满足要求。

Dockerfile文件

# Docker image for flask python run
# VERSION 1.0
# Author: PSH
# 基础镜像使用python:3.7
FROM python:3.7
# 更换镜像源
RUN echo "">sources.list  && \
    echo "deb http://mirrors.163.com/ubuntu/ artful main restricted universe multiverse">>sources.list  && \
    echo "deb http://mirrors.163.com/ubuntu/ artful-security main restricted universe multiverse">>sources.list  && \
    echo "deb http://mirrors.163.com/ubuntu/ artful-updates main restricted universe multiverse">>sources.list  && \
    echo "deb http://mirrors.163.com/ubuntu/ artful-proposed main restricted universe multiverse">>sources.list  && \
    echo "deb http://mirrors.163.com/ubuntu/ artful-backports main restricted universe multiverse">>sources.list  && \
    echo "deb-src http://mirrors.163.com/ubuntu/ artful main restricted universe multiverse">>sources.list  && \
    echo "deb-src http://mirrors.163.com/ubuntu/ artful-security main restricted universe multiverse">>sources.list  && \
    echo "deb-src http://mirrors.163.com/ubuntu/ artful-updates main restricted universe multiverse">>sources.list  && \
    echo "deb-src http://mirrors.163.com/ubuntu/ artful-proposed main restricted universe multiverse">>sources.list  && \
    echo "deb-src http://mirrors.163.com/ubuntu/ artful-backports main restricted universe multiverse">>sources.list

# 更新安装源
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get clean \
    && apt-get update

# 将服务器 requirements.txt和app.py 文件复制到 容器 /目录下
COPY requirements.txt /
COPY app.py /

# 指定容器工作目录为 /
WORKDIR /

# 安装 项目依赖
RUN pip install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
# 安装gcc编译器
RUN apt-get -y install gcc mono-mcs && \
    rm -rf /var/lib/apt/lists/*
# 下载金融量化工具TA-Lib
RUN wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz  && \
    tar -xvf ta-lib-0.4.0-src.tar.gz  && \
    cd ta-lib  && \
    ./configure --prefix=/usr && \
    make && \
    make install  && \
    pip install TA-Lib

# 安装vim和lsof工具并更新包
RUN apt-get update && \
    apt-get install apt-file && \
    apt-file update && \
    apt-get install vim && \
    apt-get install lsof

ENTRYPOINT ["python"]
CMD ["app.py"]

# 编译
# docker build -t quant/service .

# run,将宿主机的5000端口映射到docker的5050端口
# docker run -it -d --name quant -p 5000:5050 quant/service

app.py文件

# encoding:utf-8
from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app, resources=r'/*')  # 注册CORS, "/*" 允许访问所有api

@app.route('/', methods=["GET", "POST"])
def motion_index():
    return "Hello Docker!"


if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0", port=5050)

注意,由于是将文件在docker中的linux环境运行,所以端口号不是127.0.0.1而是0.0.0.0

这样的话,在浏览器的url中输入

localhost:5000

就可以访问到数据了

docker启动错误解决

以管理员方式打开CMD, 运行netsh winsock reset 后, 再次启动Docker就可以了。


   转载规则


《docker部署Python-Flask后端》 Peter Pan 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录