Rumah >pembangunan bahagian belakang >tutorial php >Sediakan aplikasi Laravel anda untuk awan

Sediakan aplikasi Laravel anda untuk awan

Emily Anne Brown
Emily Anne Brownasal
2025-03-07 01:02:09641semak imbas

Pengumuman baru-baru ini di Laraconus telah mencetuskan minat yang diperbaharui dalam penyebaran berasaskan awan dalam komuniti Laravel. Oleh kerana perdebatan berterusan mengenai cara menggunakan aplikasi anda, satu perkara yang jelas: awan menjadi pilihan yang lebih baik untuk pengguna Laravel.

Dalam artikel ini, kami akan meneroka cara menyediakan aplikasi Laravel anda untuk digunakan dalam persekitaran awan menggunakan Frankenphp, Caddy, Dockerfiles, dan akhirnya mengerahkannya ke Sevalla.

Jadi di mana kita mulakan? Dalam persekitaran tempatan tentu saja! ?

persekitaran pembangunan #local

Demi kesederhanaan, kami akan menganggap anda mempunyai aplikasi Laravel segar yang dipasang pada mesin tempatan anda, yang menghubungkan ke pangkalan data PostgreSQL untuk membaca/menulis beberapa data.

Sebelum kita bergerak, pastikan anda mempunyai fail

di akar projek anda dengan kandungan berikut:

.env

:

.env

Setelah disahkan, kita boleh mula membina. ? ☕️
<!-- Syntax highlighted by torchlight.dev -->...
DB_CONNECTION=pgsql
...

Adalah idea yang baik untuk mempunyai persekitaran pembangunan tempatan yang menyerupai persekitaran pengeluaran anda. Dengan cara ini, anda boleh menangkap sebarang masalah awal dan mengelakkan kejutan apabila anda menggunakan aplikasi anda dalam pengeluaran.

untuk meniru persediaan pengeluaran kami akan menggunakan Docker dan Docker menyusun. Jika anda tidak memasang Docker di mesin anda, anda boleh memuat turunnya dari laman web rasmi.

#Running Laravel tanpa pangkalan data

Pertama, buat fail baru yang dipanggil

dalam akar projek Laravel anda dan tambahkan kandungan berikut:

compose.yml

:

compose.yml

Fail konfigurasi ini mentakrifkan perkhidmatan yang dipanggil
<!-- Syntax highlighted by torchlight.dev -->services:
  php:
    image: dunglas/frankenphp:php8.3-bookworm
    environment:
      SERVER_NAME: ":8080"
    ports:
      - 8080:8080
    volumes:
      - .:/app
yang menggunakan imej

, yang merupakan imej Frankenphp yang merangkumi sambungan yang diperlukan untuk menjalankan aplikasi Laravel. Pembolehubah persekitaran php mengkonfigurasi Caddy untuk mendengar di Port dunglas/frankenphp:php8.3-bookworm. Kami juga mendedahkan port SERVER_NAME untuk mengakses aplikasi dari mesin tuan rumah. 8080 8080 Untuk menguji konfigurasi anda, cuba jalankan arahan berikut di terminal anda:

anda harus melihat halaman ralat Laravel yang menjelaskan sambungan itu tidak ditubuhkan ke pangkalan data kerana pemandu yang hilang apabila anda menavigasi ke
<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
dalam penyemak imbas anda. Ini dijangkakan kerana kami belum menghubungkan aplikasi Laravel kami ke pangkalan data.

http://localhost:8080 Awesome, setakat ini kami telah mengkonfigurasi aplikasi Laravel kami untuk disampaikan oleh pelayan Frankenphp.

Seterusnya, mari kita sambungkan aplikasi tempatan kami dengan pangkalan data PostgreSQL!

#Running Laravel dengan pangkalan data

Untuk menyambungkan aplikasi Laravel anda ke pangkalan data PostgreSQL, kami perlu melakukan beberapa perkara.

Pertama, kita perlu menetapkan pembolehubah persekitaran berikut dalam fail

anda:

.env

:

<!-- Syntax highlighted by torchlight.dev -->...
DB_CONNECTION=pgsql
...

Mengikuti itu, anda perlu menambah perkhidmatan baru ke fail compose.yml anda, dan buat Custom Dockerfile untuk persekitaran dev anda. Buat dan kemas kini fail dengan kandungan berikut:

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 hanya dimaksudkan untuk digunakan oleh persekitaran tempatan/pembangunan anda, dan ia memanjangkan imej dunglas/frankenphp:php8.3-bookworm untuk memasukkan lanjutan pdo_pgsql, yang diperlukan untuk menyambung ke pangkalan data PostgreSQL.

compose.yml:

<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]

ada banyak yang berlaku di sini, mari kita lihat apa yang telah berubah dan mengapa:

  1. Kami telah mengemas kini perkhidmatan php untuk menggunakan dockerfile tersuai yang dipanggil Dockerfile.dev untuk membina imej baru yang merangkumi sambungan yang diperlukan untuk menyambung ke pangkalan data PostgreSQL.
  2. Kami telah menambah perkhidmatan baru yang dipanggil db yang menggunakan imej postgres:16.4-alpine untuk menjalankan pangkalan data PostgreSQL. Kami juga telah menentukan beberapa pembolehubah persekitaran untuk menubuhkan pengguna pangkalan data, kata laluan, dan nama pangkalan data.
  3. kami telah mencipta jumlah baru yang dipanggil db_data untuk meneruskan data dalam pangkalan data pada mesin anda, dan Docker boleh menggunakannya semula apabila anda memulakan semula perkhidmatan.
  4. Perkhidmatan baru yang dipanggil
  5. juga ditambah bahawa reuses init. Imej ini digunakan untuk menjalankan perintah Dockerfile.dev untuk menjalankan migrasi pangkalan data anda. Kunci php artisan migrate memastikan bahawa perkhidmatan depends_on berjalan dan berjalan sebelum migrasi dijalankan. db
  6. Perkhidmatan
  7. sekarang bergantung pada perkhidmatan php untuk memastikan bahawa migrasi pangkalan data dijalankan sebelum aplikasi Laravel bermula. init
  8. Kami telah menambah pemeriksaan kesihatan ke perkhidmatan
  9. untuk memastikan bahawa pangkalan data PostgreSQL selesai dan berjalan sebelum perkhidmatan db menjalankan migrasi. init
Untuk menguji konfigurasi anda, jalankan arahan berikut di terminal anda:

<!-- 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
Aplikasi anda kini harus menyambung ke pangkalan data PostgreSQL anda, dan migrasi pangkalan data anda sentiasa dijalankan. ?

Envnironment tempatan anda kini bersedia untuk meniru persekitaran pengeluaran anda. Anda kini boleh membangunkan aplikasi anda secara tempatan dan menguji persediaan yang sama seperti yang akan anda gunakan dalam pengeluaran.

#Preparing untuk Pengeluaran

sudah tiba masanya untuk membuat perubahan yang diperlukan untuk persekitaran pengeluaran anda.

Langkah pertama adalah untuk memberitahu Docker mana direktori yang dapat diabaikan dengan selamat ketika membina imej pengeluaran. Buat fail baru yang dipanggil

dalam akar projek Laravel anda dan tambahkan kandungan berikut: .dockerignore

: .dockerignore

<!-- Syntax highlighted by torchlight.dev -->FROM dunglas/frankenphp:php8.3-bookworm

RUN install-php-extensions pdo_pgsql
Fail ini memberitahu Docker untuk mengabaikan direktori

, vendor, dan bootstrap/cache. tests

Kemudian, buat Dockerfile yang akan digunakan untuk membina imej pengeluaran anda:

Dockerfile:

<!-- Syntax highlighted by torchlight.dev -->...
DB_CONNECTION=pgsql
...

ini Dockerfile sama dengan Dockerfile.dev yang kami buat sebelum ini, tetapi ia termasuk beberapa langkah tambahan:

  1. Sebagai imej Frankenphp menggunakan Caddy sebagai pelayan web lalai, kami telah menetapkan pembolehubah persekitaran SERVER_NAME untuk :8080 untuk mengarahkan Caddy untuk mendengar di port 8080.
  2. Kami memasang lanjutan @composer php untuk memasang komposer dalam imej.
  3. composer install perintah dijalankan untuk memasang kebergantungan aplikasi Laravel anda.
  4. kami telah menetapkan direktori kerja ke /app dan menyalin kandungan aplikasi Laravel anda ke imej.

Untuk menguji perubahan anda dalam persekitaran tempatan anda, anda perlu menghasilkan pengeluaran aplikasi anda. Jalankan arahan berikut di terminal anda:

<!-- Syntax highlighted by torchlight.dev -->services:
  php:
    image: dunglas/frankenphp:php8.3-bookworm
    environment:
      SERVER_NAME: ":8080"
    ports:
      - 8080:8080
    volumes:
      - .:/app

Perintah ini membina imej Docker baru yang dipanggil my-laravel-app berdasarkan Dockerfile dalam direktori semasa.

Untuk menguji imej pengeluaran yang baru dibina, gunakan arahan berikut:

<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]

Ganti <your-app-key> dengan nilai pembolehubah persekitaran APP_KEY dalam fail .env anda atau ambil kunci dari sini.

Lawati localhost: 8080 dalam penyemak imbas anda, dan aplikasi anda harus bermula dalam mod pengeluaran. Ia mungkin kesilapan kerana kekurangan sambungan pangkalan data, tetapi itu dijangka.

#deploying to the Cloud

Sekarang bahawa anda mempunyai imej Docker yang siap pengeluaran, anda boleh menggunakannya ke pembekal awan. ?

Dalam tutorial ini, kami akan menggunakan Sevalla, pembekal awan baru yang menawarkan cara mudah untuk menggunakan penyebaran berasaskan Dockerfile.

Sebagai aplikasi anda bergantung pada pangkalan data PostgreSQL, anda lebih baik menyediakan pangkalan data PostgreSQL baru di Sevalla terlebih dahulu. Sebaik sahaja anda log masuk ke papan pemuka Sevalla,

  1. navigasi ke modal modal modal
  2. Pilih Pangkalan Data PostgreSQL
  3. Sahkan tetapan dan buat pangkalan data

Setelah pangkalan data anda siap, anda boleh membuat aplikasi Laravel anda di Sevalla.

  1. navigasi ke mode cipta modal
  2. Pilih repositori aplikasi anda dari penyedia git pilihan anda
  3. Pastikan untuk memilih pusat data yang sama pangkalan data anda di
  4. Tetapkan pembolehubah persekitaran APP_KEY yang diperlukan oleh Laravel
  5. pilih Dockerfile sebagai jenis binaan
  6. Sahkan selebihnya tetapan dan tekan butang "Deploy kemudian"

Jika aplikasi anda siap, kini anda boleh menyambungkannya dengan pangkalan data PostgreSQL anda.

  1. navigasi ke halaman aplikasi
  2. pergi ke tab "Rangkaian"
  3. Klik pada butang "Tambah Sambungan" dan pilih pangkalan data PostgreSQL anda
  4. Sahkan tetapan dan tekan "Sambung"

Kemudian, tetapkan pembolehubah persekitaran berikut dalam tab "Pembolehubah Alam Sekitar" dengan butiran sambungan pangkalan data anda:

  • DB_CONNECTION
  • DB_HOST
  • DB_PORT
  • DB_DATABASE
  • DB_USERNAME
  • DB_PASSWORD
  • kami mengesyorkan menggunakan alamat rangkaian dalaman pangkalan data anda sebagai nilai
. Dengan cara ini, aplikasi anda boleh menyambung ke pangkalan data melalui rangkaian peribadi.

Langkah terakhir adalah untuk menubuhkan proses kerja untuk aplikasi anda untuk menjalankan miRgations pangkalan data sebelum memulakan aplikasi.

Navigasi ke tab "Proses" DB_HOST

Klik pada butang "Buat Proses" dan pilih "Job"

tetapkan arahan ke
  1. Tetapkan dasar Mula untuk "sebelum penempatan"
  2. Sahkan tetapan dan tekan "Buat"
  3. php artisan migrate --force
  4. Jika ini juga dilakukan, kini anda boleh memulakan penggunaan manual aplikasi anda dalam tab Deployments. ?

Jika semua berjalan lancar, selamat! Anda telah berjaya menyediakan aplikasi Laravel anda untuk awan. ? #conclusion

Dalam artikel ini, kami telah meneroka:

cara menyediakan persekitaran tempatan anda untuk meniru persekitaran pengeluaran anda menggunakan Docker dan

.

Cara menyediakan aplikasi Laravel anda untuk digunakan dalam persekitaran awan menggunakan Docker, Frankenphp, dan Caddy.

    Kami juga telah meliputi cara menggunakan aplikasi anda ke pembekal awan seperti Sevalla.
  • docker compose
  • Dengan mengikuti langkah-langkah ini, anda boleh mengambil aplikasi Laravel anda ke ketinggian baru dan menikmati manfaat penyebaran berasaskan awan. ?
  • #update: 8 September, 2024
  • kami menerima maklum balas yang berharga daripada komuniti melalui perbincangan mengenai X.

Titik pertama menekankan bahawa termasuk arahan

dalam fail

tidak perlu, kerana ia melangkaui pelayan Frankenphp. Kami telah membetulkannya dengan mengemas kini bahagian yang relevan dari fail

.

Titik kedua, dikongsi oleh Kévin Dunglas (pencipta Frankenphp), disyorkan menggunakan imej berasaskan Debian (bookworm) dan bukannya Alpine (alpine), kerana Debian menawarkan keserasian yang lebih baik dengan PHP dan prestasi yang lebih baik dengan Frankenphp. Akibatnya, kami mengemas kini fail Dockerfile.dev dan Dockerfile.

Kami berterima kasih atas sokongan dan maklum balas masyarakat. ? ❤️

Atas ialah kandungan terperinci Sediakan aplikasi Laravel anda untuk awan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn