使用 Docker Compose 部署 Laravel 应用的示例

阅读时长 4 分钟读完

前言

Laravel 是一款优秀的 PHP 开发框架,可以帮助开发者快速构建高质量的 Web 应用程序。但是,在部署应用程序时,我们可能会遇到一些问题,例如环境配置、依赖项安装等等。为了解决这些问题,我们可以使用 Docker Compose。

Docker Compose 是 Docker 的一个工具,可以帮助我们定义和运行多个 Docker 容器的应用程序。通过 Docker Compose,我们可以轻松地构建、启动和管理多个容器,使得应用程序的部署变得非常简单和可靠。

在本文中,我们将介绍如何使用 Docker Compose 部署 Laravel 应用程序,并提供一个示例代码。

准备工作

在开始之前,我们需要准备一些工具和环境:

  • Docker 和 Docker Compose:您需要在本地计算机上安装 Docker 和 Docker Compose。
  • Laravel 应用程序:您需要有一个 Laravel 应用程序,并确保它可以在本地计算机上运行,并且可以连接到数据库。

编写 Docker Compose 文件

在部署 Laravel 应用程序之前,我们需要编写一个 Docker Compose 文件。这个文件将定义我们的应用程序所需的容器和服务。

下面是一个示例 Docker Compose 文件:

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

在上面的示例中,我们定义了两个服务:appdbapp 服务将运行我们的 Laravel 应用程序,而 db 服务将运行 MySQL 数据库。

app 服务中,我们使用 build 指令来构建 Docker 镜像。我们还指定了容器将使用哪个端口,并将本地目录映射到容器中的 /var/www/html 目录。我们还设置了一些环境变量,以便 Laravel 应用程序可以连接到数据库。

db 服务中,我们使用 MySQL 的官方 Docker 镜像,并设置了一些环境变量,以便创建一个新的 MySQL 数据库。我们还将 MySQL 数据库的数据卷挂载到本地的 db_data 目录中,以便持久化存储数据。

构建和运行容器

在编写了 Docker Compose 文件之后,我们可以使用以下命令来构建和运行容器:

这将使用 Docker Compose 文件中定义的配置来构建和启动容器。-d 参数表示容器将在后台运行。

一旦容器启动成功,我们可以使用以下命令来查看容器的状态:

这将显示所有正在运行的容器的状态。

访问应用程序

现在,我们的 Laravel 应用程序已经在容器中运行,我们可以使用以下 URL 来访问它:

这将显示 Laravel 应用程序的默认欢迎页面。

总结

在本文中,我们介绍了如何使用 Docker Compose 部署 Laravel 应用程序,并提供了一个示例代码。使用 Docker Compose 可以帮助我们轻松地构建、启动和管理多个容器,使得应用程序的部署变得非常简单和可靠。如果您还没有尝试过 Docker Compose,那么现在是时候开始学习了!

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

纠错
反馈