欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > docker_快速部署flask架构下的web容器

docker_快速部署flask架构下的web容器

2024/10/25 9:29:53 来源:https://blog.csdn.net/qq_43527128/article/details/142149588  浏览:    关键词:docker_快速部署flask架构下的web容器

保证你的机器上安装了docker 并正常启动可参考
阿里镜像站docker

flask项目结构如下:

my-flask-app/
├── Dockerfile
├── app.py
├── requirements.txt
└── config/└── settings.py

my-flask-app/
这是你的项目根目录,包含了所有与 Flask 应用相关的文件和配置。
Dockerfile
这个文件包含了构建 Docker 镜像所需的指令和配置。Dockerfile 定义了如何从基础镜像开始,逐步添加应用程序所需的所有组件(例如安装依赖、复制文件、设置环境变量等)。

# 基于 centos:7 作为基础镜像
FROM centos:7# 设置维护者信息
LABEL maintainer="your_email@example.com"# 更换为阿里云的 CentOS 镜像源
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup && \curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \yum clean all && yum makecache# 安装 Python 和 pip
RUN yum -y update && \yum -y install epel-release && \yum -y install python3 python3-pip && \yum clean all# 设置工作目录
WORKDIR /app# 复制本地的 requirements.txt 到镜像中的 /app 目录
COPY . /app# 查看 requirements.txt 内容,确认是否存在
RUN cat /app/requirements.txt# 安装 Python 依赖
# 使用阿里云的 Python 镜像源
RUN pip3 install --no-cache-dir -r /app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 暴露 Flask 应用的端口(例如5000)
EXPOSE 5000# 设置启动命令
CMD ["python3", "app.py"]

基础镜像:使用 FROM 指令指定基础镜像。
维护者信息:使用 LABEL 指令添加镜像的元数据。
安装软件:使用 RUN 指令执行命令来安装软件包。
复制文件:使用 COPY 或 ADD 指令将文件复制到镜像中。
设置工作目录:使用 WORKDIR 指令指定工作目录。
设置环境变量:使用 ENV 指令设置环境变量。
暴露端口:使用 EXPOSE 指令声明容器的网络端口。
运行命令:使用 CMD 或 ENTRYPOINT 指令定义容器启动时执行的命令。

app.py
这是你的 Flask 应用的主要代码文件。Flask 是一个轻量级的 Python Web 框架,app.py 通常包含应用的主要逻辑、路由处理和其他功能实现。

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, Docker World!"if __name__ == "__main__":app.run(host="0.0.0.0", port=5000)

requirements.txt
这个文件列出了你的 Flask 应用所需的所有 Python 包及其版本。Dockerfile 会使用这个文件来安装应用所需的依赖。比如,文件可能包含:

Flask==2.0.1
gunicorn==20.1.0

config/
这个目录通常包含配置文件,供 Flask 应用使用。配置文件可以包括数据库设置、API 密钥、应用参数等。
settings.py
这是一个配置文件,通常用于存储应用的配置设置,比如数据库连接信息、应用环境(开发、测试、生产)等。Flask 应用可以从这个文件读取配置,来调整其行为。

构建镜像
在包含Dockerfile目录下 : 末尾的 . 表示当前目录下 通过Dockerfile文件来构建一个名为my-flask的容器

[root@localhost my-flask-app]# docker build -t my-flask .
[+] Building 18.2s (12/12) FINISHED                                                                                                                            docker:default=> [internal] load build definition from Dockerfile                                                                                                                     0.0s=> => transferring dockerfile: 1.09kB                                                                                                                                   0.0s=> [internal] load metadata for docker.io/library/centos:7                                                                                                              2.7s=> [internal] load .dockerignore                                                                                                                                        0.0s=> => transferring context: 2B                                                                                                                                          0.0s=> [1/7] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                                                        0.0s=> [internal] load build context                                                                                                                                        0.0s=> => transferring context: 643B                                                                                                                                        0.0s=> CACHED [2/7] RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&     curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliy  0.0s=> CACHED [3/7] RUN yum -y update &&     yum -y install epel-release &&     yum -y install python3 python3-pip &&     yum clean all                                     0.0s=> CACHED [4/7] WORKDIR /app                                                                                                                                            0.0s=> [5/7] COPY . /app                                                                                                                                                    0.0s=> [6/7] RUN cat /app/requirements.txt                                                                                                                                  0.6s=> [7/7] RUN pip3 install --no-cache-dir -r /app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/                                                           14.8s=> exporting to image                                                                                                                                                   0.1s => => exporting layers                                                                                                                                                  0.1s => => writing image sha256:4836d2469ecf52ceab01d2338fc88f4c5cfdb4e59eca822d0d78e19214a04ca0# 查看
[root@localhost my-flask-app]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
my-flask     latest    4836d2469ecf   47 minutes ago   953MB
nginx        latest    39286ab8a5e1   4 weeks ago      188MB

构建容器

[root@localhost my-flask-app]# docker run -d -p 5000:5000 my-flask
a869bd32ff5471c1cb61df92c4322172d4f86dd474f1d04e82fbfdd426cc59ee
[root@localhost my-flask-app]# docker ps
CONTAINER ID   IMAGE      COMMAND            CREATED         STATUS         PORTS                                       NAMES
a869bd32ff54   my-flask   "python3 app.py"   7 seconds ago   Up 5 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   flamboyant_brattain

验证

浏览器输入:
http://localhost:5000/   应该可以看到app.py的输出内容

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com