zoukankan      html  css  js  c++  java
  • docker打包flask简单程序

    简单代码:

    from flask import Flask
    app=Flask(__name__)
    @app.route('/')
    def hello():
        return 'hello world'
    if __name__ == '__main__':
        app.run()
    app.py
    FROM python:3.6
    LABEL maintainer="FELIX 1403179190@qq.com"
    RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask
    COPY app.py /app/
    WORKDIR /app
    EXPOSE 5000
    CMD ["python3","app.py"]
    Dockerfile

    然后执行命令:

    docker build -t felix/flask-demo .    打包
    docker image ls 查看
    docker run -d felix/flask-demo 运行,-d参数为在后台运行
    docker ps 查看运行的程序

    多模块代码--redis模块和python

    # -*- coding: utf-8 -*-
    # @Author : Felix Wang
    # @time   : 2018/8/9 14:14
    
    from flask import Flask
    from redis import Redis
    import os
    import socket
    
    app = Flask(__name__)
    redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
    
    
    @app.route('/')
    def index():
        redis.incr('hits')
        return 'Hello Container World! I have been seen {} times and my hostname is {}.
    '.format(str(redis.get('hits')),socket.gethostname())
    
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000, debug=True)
    app.py
    FROM python:3.6
    LABEL maintainer="FELIX 1403179190@qq.com"
    RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask redis
    COPY app.py /app/
    WORKDIR /app
    EXPOSE 5000
    CMD ["python3","app.py"]
    Dockerfile

    可以看到上面的dockerfile并没有redis模块的安装,通常来说一个模块放在一个容器里面

    然后执行命令:

    docker run -d --name redis redis    下载并安装运行redis模块容器
    docker build -t felix/flask-redis-demo .    将上面的Dockerfile打包成image
    docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis felix/flask-redis-demo      运行并传递参数以及端口,环境变量  -p指定端口映射,--link指定连接到的容器,之后访问可以直接用别名,-e表示传递参数
    执行上面代码之后就能通过宿主机访问127.0.0.1:5000
  • 相关阅读:
    DriveInfo 类 提供对有关驱动器的信息的访问
    遍历数组 例子
    怎么判断点击dataGridView1的是第几列
    无法加载协定为“ServiceReference1.LanguageService”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
    c#面试题及答案(一)
    SQL杂谈 ,有你想要的...
    TextView和Button的学习
    GitHub的学习和使用
    App的布局管理
    EditText制作简单的登录界面
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9444322.html
Copyright © 2011-2022 走看看