• 前后端项目部署-1, flask,只有flask,一个最简单的flask项目部署到Docker的过程,


    ####

    第一步:

    首先准备一个简单的flask项目,

    只需要一个main函数就可以了,随便写一个接口,

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def alldata():
        return '<h1>Hello World!</h1>'
    
    
    #
    if __name__ == "__main__":
        """初始化,debug=True"""
        app.run(host='0.0.0.0', port=9876, debug=True)

    ###

    第二步:

    生成requirement.txt

    Flask网页程序中需要依赖一些Python库,为了方便在docker上进行安装,所以将需要的库整合到requirement.txt中。

    在终端中进入到项目目录下,执行下面的目录,生成requirement.txt

    pip freeze > requirements.txt,里面只有一个flask,

    Flask==2.0.1

    ###

    第三步:

    创建Dockerfile

    什么是Dockerfile?

    Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),有了 Dockerfile,就可以创建我们所需要的镜像

    FROM python:3.8-alpine3.13
    
    WORKDIR /app
    
    ADD . /app
    
    RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    EXPOSE 9876
    
    CMD ["python", "app.py"]

    FROM python:3.8-alpine3.13

    FROM命令指定将在其上构建新镜像的基础容器镜像。 这样就可以从一个现有的镜像开始,添加或改变一些东西,并最终得到一个派生的镜像。 镜像由名称和标签来标记,之间用冒号分隔。 该标签用作版本控制机制,允许容器镜像提供多个版本。 现在选择的镜像的名称是python,它是Python的官方Docker镜像。 该镜像的标签允许指定解释器版本和基础操作系统。 3.6-alpine标签是安装在Alpine Linux上的Python 3.6解释器。 由于其体积小,Alpine Linux发行版比起更常见的发行版(例如Ubuntu)使用更广泛。 可以在Python镜像库中查看可用的Python镜像标签。

    Python镜像库:https://hub.docker.com/r/library/python/tags/

    这里WORKDIR为容器内设置的工作目录,RUN CMD ENTRYPOINT都是在这个目录下进行的

    ADD . /app将Dockerfile所在目录下的所有文件拷贝到容器内的/app目录下(也可用COPY)

    RUN命令执行的为安装项目依赖

    EXPOSE将容器内的端口暴露出去我

    CMD为容器启动时容器内执行的操作(目前还没分清与ENTRYPOINT使用哪个更好)

    ####

    第四步,构建,

    上面准备好docker构建的文件后

    开始构建docker image

    首先切换到Dockerfile所在目录

    执行

    (venv) passwordis123@ubuntu:~/PycharmProjects/tests/test_flask/test_flask_docker$ docker build -f Dockerfile -t flask_docker_test .

    ####

    第五步运行,

    待镜像构建完成后,启动项目镜像test_flask_docker

    执行

    (venv) passwordis123@ubuntu:~/PycharmProjects/tests/test_flask/test_flask_docker$ docker run -p 9876:9876 flask_docker_test

    提醒:

    1、这里的172.17.0.2是docker的这个容器ip(实际上就是咱们本机/服务器的内网IP)

    2、建议在flask程序中的host设置为0.0.0.0,不然可能出现无法访问的情况

     则项目通过docker启动了

    在浏览器输入http://localhost:9876/

    ##### 

    把这个容器导出,然后放到centos上面去,

    第一步,导出容器,

    docker save -o flask_docker_test.tar flask_docker_test

    第二步,把这个tar上传到centos,

    使用rz命令,

    第三步,先在centos安装一下docker,

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    第四步,在centos导出容器,

    docker load < flask_docker_test.tar

    第五步,运行容器,

    docker run -p 9876:9876 test_flask_docker:v1

    成功运行这个docker,所以是不是非常的方便啊,哈哈哈哈哈,

    #####

  • 相关阅读:
    成功更容易光顾磨难和艰辛,正如只有经过泥泞的道路才会留下脚印
    只要信心在,勇气就在,努力在,成功就在!
    不积跬步无以至千里,不积小流无以成江海
    你给自己留的退路越多,你失败的可能性就越大
    不要质疑你的付出,这些都会是一种累积一种沉淀,它们会默默铺路,只为让你成为更优秀的人
    生活的一大乐趣便是完成别人认为你不能做到的事情
    优于别人,并不高贵,真正的高贵,是优于过去的自己
    再长的路 ,一步步也能走完,再短的路,不迈开双脚也不无法到达!
    09SpringAopAdvice
    java中接口(interface)和虚基类(abstract class)的区别
  • 原文地址:https://www.cnblogs.com/andy0816/p/15367843.html
Copyright © 2020-2023  润新知