使用 Docker Compose 部署 Flask 应用

阅读时长 6 分钟读完

在 Web 应用开发中,使用 Flask 框架可以轻松地构建出高效的 Web 应用。但是,在将应用部署到生产环境中时,我们面临着很多问题,如不同环境中的依赖问题、不同机器的运行环境问题等等。使用 Docker Compose 可以解决这些问题,让我们更加专注于应用本身的开发。

Docker Compose 简介

Docker Compose 是一个 Docker 容器编排工具。它可以通过一个配置文件来定义、启动和管理多个 Docker 容器,从而构建出一个复杂的应用。通过 Docker Compose,我们可以轻松地进行应用部署、开发、测试和监控等操作。

部署 Flask 应用

下面我们将通过一个示例来演示如何使用 Docker Compose 部署一个 Flask 应用。我们将使用 Flask、Nginx 和 MySQL 三个容器来构建这个应用。

安装 Docker 和 Docker Compose

首先,我们需要安装 Docker 和 Docker Compose。可以参考 Docker 的文档来完成安装。

编写 Docker Compose 配置文件

在项目根目录下,创建一个名为 docker-compose.yml 的文件,并添加以下内容:

-- -------------------- ---- -------
-------- ---

---------
  ------
    ------ ---------
    ------------
      --------------- -----
      ----------- ----
      --------------- --------
      -------------------- -------------
    ------
      - -----------
    --------
      - ---------------------------

  ------
    ------
      -------- -
      ----------- ----------------
    ------
      - -------
    -----------
      - -----

  ------
    ------
      -------- -
      ----------- ----------------
    ------------
      --------------- -----
      ----------- ----
      --------------- --------
      ----------- -----
      ----------- ----
    ------
      - -----------
    --------
      - ----------

在以上配置文件中,我们定义了三个服务:

  • mysql:MySQL 数据库容器,使用 MySQL 5.7 版本的镜像,配置了数据库名称、用户名、密码和 root 用户密码,并将本机的 3306 端口映射到容器的 3306 端口上。
  • nginx:Nginx 容器,使用 Dockerfile.nginx 构建镜像,将本机的 80 端口映射到容器的 80 端口上,并依赖于 flask 容器。
  • flask:Flask 应用容器,使用 Dockerfile.flask 构建镜像,将本机的 5000 端口映射到容器的 5000 端口上,配置了连接 mysql 数据库的相关环境变量,并将 app 目录挂载到容器上。

编写 Dockerfile 文件

在项目根目录下,创建一个名为 Dockerfile.flask 的文件,并添加以下内容:

-- -------------------- ---- -------
---- -----------------

------- ----

---- ---------------- -----

--- --- --- ---------- ----------------------- -- -
    --- --- ---------- --------- ----------- ---------- ----------- -- -
    --- ------- -------------- -- ---------------- -- -
    --- --- -----------

---- - ----

------ ----

--- ---------- ---------

在以上 Dockerfile 文件中,我们定义了 Flask 应用容器的构建方式,使用 Python 3.8 的 alpine 版本作为基础镜像,安装了 MariaDB 客户端和开发库,安装了项目依赖包,并将 app 目录拷贝到容器中,设置了容器的启动命令为运行 app.py 文件,并将容器的 5000 端口打开。

在项目根目录下,创建一个名为 Dockerfile.nginx 的文件,并添加以下内容:

在以上 Dockerfile 文件中,我们定义了 Nginx 容器的构建方式,使用官方的 Nginx 镜像,并将项目中的 nginx.conf 文件覆盖到容器的默认配置中,设置了容器的启动命令为运行 Nginx,并将容器的 80 端口打开。

编写 Nginx 配置文件

在项目根目录中,创建一个名为 nginx.conf 的文件,并添加以下内容:

-- -------------------- ---- -------
------ -
    ------ ---
    ----------- ----------

    -------- - -
        ---------- -------------------
        ---------------- ---- ------
        ---------------- --------- -------------
    -
-

在以上配置文件中,我们定义了 Nginx 的路由规则,将所有请求通过反向代理转发到名为 flask 的容器中,容器监听的是 5000 端口。

构建和启动应用

在项目根目录下运行以下命令,即可构建和启动应用:

运行成功后,Flask 应用将会监听本地的 5000 端口,Nginx 和 MySQL 能够正常运行。

在浏览器中访问 http://localhost,即可看到应用的效果。

停止应用

在项目根目录下运行以下命令,即可停止应用:

以上就是使用 Docker Compose 部署 Flask 应用的全部操作步骤。通过使用 Docker Compose,我们可以轻松地对复杂的应用进行构建、部署和管理,简化了开发和运维的工作难度。

总结

本文介绍了如何使用 Docker Compose 来部署 Flask 应用,详细介绍了 Docker Compose 的基本用法,以及如何为 Flask 应用编写 Dockerfile 文件、编写 Nginx 配置文件、构建和启动应用、停止应用等操作。相信本文能够帮助您更好地理解 Docker Compose 的使用方法,提高应用的开发和部署效率。

参考资料

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6498451d48841e9894553589

纠错
反馈