>最近在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中文網其他相關文章!