Laravel是最流行的PHP框架之一。根据BuiltWith的数据,Laravel被全球超过720万个网站使用。Laravel是一个固执己见的框架,它是模块化的,易于使用的,并且有一个蓬勃发展的生态系统。在这篇文章中,您将学习如何在 Ubuntu 22.04 上使用 Docker Compose 运行 Laravel。
先决条件
-
安装了 Docker 和 Docker Compose 的 Ubuntu v22.04。在本教程中,我们将使用 Docker v20.10.20 和 Docker Compose v2.12.2
-
Docker经验
-
一些关于拉拉维尔的先验知识会有所帮助
-
任何以前对 Docker 多阶段构建的了解都将很有用
-
先验了解 Apache 的工作原理及其与 PHP 的关系
什么是 Docker?
Docker是一个开源平台,使软件工程师能够将他们的应用程序打包到称为容器的工件中,使它们易于发布,并避免在搜索查询中添加“在我的机器上工作”的问题。
那么,什么是容器?容器是一种使用户能够将整个堆栈打包为工件的技术。在此上下文中,整个堆栈指的是操作系统、具有任何依赖项的语言、应用程序代码及其依赖项。因此,在每个部署中,您交付的是整个堆栈,而不仅仅是更改的五行代码。
容器已经存在了很长时间,但它们在 2014 年被 Docker 普及。
映像是按照开放容器倡议 (OCI) 标准构建的,因此它们可以在任何地方运行。
带背包的拉拉维尔应用程序示例
在本指南中使用Docker和Docker Compose运行Laravel,我们将使用一个简单的Laravel应用程序。这个基本的Laravel应用程序将使用MySQL数据库,为了展示工作原理,我们将使用流行的Backpack Laravel软件包,用于构建和自定义管理面板。
为了简单起见,因为Laravel已经带有用户表和用户模型,我们将将其与Backpack连接以查看和编辑用户。这里需要注意的是,如果您编辑用户,该用户将无法登录,因为密码不会被加密。但是,这不是本教程关注的问题。在这篇文章中,重点是在 Ubuntu v22.04 上使用 Docker 和 Docker Compose 使用 MySQL 运行 Laravel 应用程序。
我们应用程序的完整代码可在此 GitHub 存储库中找到。它还包括 Dockerfile 和 docker-compose.yml 文件。
最终应用程序将在登录后访问 http://localhost:8082/admin/user 时列出用户:
拉拉维尔赛尔
Laravel 9.x的默认安装说明随Laravel Sail一起提供。Sail是一款伟大的产品,也是Laravel生态系统不可或缺的一部分。其GitHub存储库指出,“Sail为Laravel提供了Docker驱动的本地开发体验,与macOS,Windows(WSL2)和Linux兼容。那么,我们为什么不使用它呢?
Sail 是开发环境的绝佳工具,但它不适合类似生产的环境,因为:
-
Sail 过于通用,包括多个功能,如数据库、Redis 和使用 MeiliSearch 进行搜索。在生产中,这些依赖项被卸载到其他服务,如 RDS 或开放搜索
-
Dockerfile 非常适合开发环境。它有xdebug,Node.js 16和yarn。它也有MySQL和Node.js的客户端,但这些东西增加了容器的膨胀和重量,使得它对于类似生产的环境来说是不切实际的。
-
Sail 不使用官方的 Docker 镜像,而Facebook双重验证如何设置?Facebook账号如何保障安全?是将 Ubuntu v22.04 作为基础镜像的 Docker 镜像缝合在一起