>最近在Laraconus发表的公告引发了人们对Laravel社区内基于云的部署的重新兴趣。随着如何部署应用程序的辩论继续进行,一件事很明显:对于Laravel用户而言,云已成为更可行的选择。
>在本文中,我们将探讨如何使用Frankenphp,Caddy,Dockerfiles在云环境中准备Laravel应用程序,并最终将其部署到Sevalla。那么我们从哪里开始呢?当然,在当地环境中! ?
#LOCAL开发环境
为了简单起见,我们假设您在本地计算机上安装了一个新的Laravel应用程序,该应用程序连接到PostgreSQL数据库以读取/编写一些数据。
:.env
>经过验证,我们就可以开始构建。 ? ☕️.env
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
#running laravel没有数据库
>首先,在Laravel项目的根部创建一个名为
的新文件,并添加以下内容:此配置文件定义了使用compose.yml
image的服务,该服务是Frankenphp映像,它包含运行Laravel应用程序的必要扩展名。
上聆听。
我们还将公开端口compose.yml
从主机计算机访问该应用程序。
<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
>您应该看到一个Laravel错误页面,以说明该连接未在数据库中建立,因为当您在浏览器中导航到php
时缺少驱动程序。这是可以预期的,因为我们尚未将Laravel应用程序连接到数据库。dunglas/frankenphp:php8.3-bookworm
>
SERVER_NAME
太棒了,到目前为止,我们已经配置了我们的Laravel应用程序,可以由Frankenphp服务器提供。8080
接下来,让我们将本地应用与PostgreSQL数据库联系起来!8080
>
要将您的Laravel应用程序连接到PostgreSQL数据库,我们需要做几件事。
<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
>文件中设置以下环境变量:http://localhost:8080
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
文件中添加新服务,并为开发环境创建自定义compose.yml
。使用以下内容创建和更新文件:Dockerfile
:Dockerfile.dev
<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
>仅是您的本地/开发环境使用的,它将Dockerfile.dev
图像扩展到包含dunglas/frankenphp:php8.3-bookworm
>扩展名,这是连接到PostgreSQL数据库所需的。
pdo_pgsql
compose.yml
<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
我们已经更新了
服务,以使用称为php
>的新服务,该服务使用Dockerfile.dev
> image运行PostgreSQL数据库。我们还定义了一些环境变量来设置数据库用户,密码和数据库名称。db
的新卷,以持续计算机上的数据库中的数据,而Docker可以重新启动服务时将其重新使用。
postgres:16.4-alpine
>还添加了一种称为db_data
命令来运行数据库迁移。 init
>
Dockerfile.dev
>php artisan migrate
服务现在取决于depends_on
>服务,以确保在Laravel应用启动之前运行数据库迁移。db
>我们已经在服务中添加了健康检查,以确保PostgreSQL数据库在运行迁移之前正在启动并运行。
php
>
init
db
>您的当地环境现在准备模仿您的生产环境。现在,您可以在本地开发应用程序,并测试您将在生产中使用的非常相似的设置。init
>
>
>第一步是告诉Docker在构建生产图像时可以安全地忽略哪个目录。在Laravel项目的根部创建一个名为<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql DB_HOST=db DB_PORT=5432 # default PostgreSQL port DB_DATABASE=main DB_USERNAME=admin DB_PASSWORD=password
>
Dockerfile
Dockerfile
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
>,但其中包括一些其他步骤:Dockerfile
Dockerfile.dev
SERVER_NAME
>。
:8080
我们安装了8080
php扩展名,以在图像中安装作曲家。@composer
命令运行以安装Laravel应用的依赖项。
composer install
/app
。
要测试您新构建的生产图像,请使用以下命令:<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
>替换my-laravel-app
在Dockerfile
>文件中的
>访问Localhost:8080在您的浏览器中,您的应用程序应以生产模式开始。由于缺乏数据库连接,可能会出错,但这是预期的。
#deploying到云<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
>现在您拥有准备生产的Docker映像,您可以将其部署到云提供商。 ?<your-app-key>
APP_KEY
在本教程中,我们将使用Sevalla,这是一种新的云提供商,该提供商提供了一种简单的部署.env
基于
>您的应用取决于PostgreSQL数据库,因此最好先在Sevalla上提供新的PostgreSQL数据库。登录Sevalla仪表板后,
>导航到创建数据库模式
选择PostgreSQL数据库Dockerfile
从您喜欢的git提供商中选择您的应用程序存储库
设置Laravel
所需的环境变量APP_KEY
Dockerfile
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
DB_HOST
最后一步是在启动应用程序之前设置一个工作过程,以便您的应用程序运行数据库mirgations。
>导航到“进程”选项卡
php artisan migrate --force
如果也完成了此操作,您现在可以在“部署”选项卡中启动应用程序的手动部署。 ?
#conclusion
在本文中,我们探索了:
。
>如何使用Docker,Frankenphp和Caddy准备Laravel应用程序在云环境中部署docker compose
>文件中的
命令是不必要的,因为它绕过了Frankenphp服务器。我们已经通过更新第二点由KévinDunglas(Frankenphp的创建者)共享,建议使用基于Debian的图像(bookworm
)而不是Alpine(alpine
),因为Debian提供了与PHP的更好兼容性,并且与Frankenphp的性能更好。结果,我们同时更新了Dockerfile.dev
和Dockerfile
> files。
我们感谢社区的支持和反馈。 ? ❤️
以上是为云准备您的Laravel应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!