Penghijrahan pantas aplikasi PHP dengan Docker Compose, Nginx dan MariaDB

王林
Lepaskan: 2023-10-12 12:36:02
asal
1113 orang telah melayarinya

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的快速迁移

Migrasi pantas aplikasi PHP melalui Docker Compose, Nginx dan MariaDB

Dengan pembangunan berterusan dan populariti pengkomputeran awan, semakin banyak aplikasi mula digunakan dan diurus menggunakan kontena. Docker kini merupakan salah satu platform kontena paling popular, menyediakan penyelesaian pembungkusan dan penghantaran aplikasi yang pantas dan ringan.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan tiga alat Docker Compose, Nginx dan MariaDB untuk mencapai pemindahan pantas aplikasi PHP.

1. Persediaan persekitaran
Sebelum kita mula, kita perlu memasang Docker dan Docker Compose. Docker ialah platform kontena sumber terbuka dan Docker Compose ialah alat untuk mentakrif dan menjalankan berbilang bekas Docker.

Untuk cara memasang Docker, sila rujuk dokumentasi rasmi (https://docs.docker.com/get-docker/). Memasang Docker Compose boleh dilengkapkan dengan arahan berikut:

$ sudo pip install docker-compose
Salin selepas log masuk

2. Buat fail Docker Compose
Docker Compose menggunakan fail konfigurasi format YAML untuk mentakrif dan mengurus berbilang bekas. Kami perlu mencipta fail yang dipanggil docker-compose.yml dan menentukan bekas aplikasi kami di dalamnya.

Berikut ialah contoh mudah:

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 80:80
    volumes:
      - ./web:/var/www/html
    depends_on:
      - db
  db:
    image: mariadb:latest
    restart: always
    environment:
      MYSQL_DATABASE: myapp
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
      MYSQL_ROOT_PASSWORD: myrootpassword
    volumes:
      - ./db:/var/lib/mysql
Salin selepas log masuk

Dalam contoh ini, kami telah mentakrifkan dua perkhidmatan (web dan db). Perkhidmatan web digunakan untuk menjalankan aplikasi PHP kami dan perkhidmatan db digunakan untuk menjalankan pangkalan data MariaDB.

  • Perihalan item konfigurasi perkhidmatan web:

    • bina: Tentukan laluan konteks dan bina fail untuk membina imej.
    • mula semula: Tetapkan bekas untuk dimulakan semula secara automatik selepas keluar.
    • port: Petakan port 80 kontena ke port 80 hos.
    • volum: Lekapkan direktori web pada hos ke direktori /var/www/html bekas.
    • bergantung_pada: Perkhidmatan web bergantung pada perkhidmatan db.
  • penerangan item konfigurasi perkhidmatan db:

    • imej: Tentukan imej MariaDB untuk digunakan.
    • mula semula: Tetapkan bekas untuk dimulakan semula secara automatik selepas keluar.
    • persekitaran: Tetapkan pembolehubah persekitaran MariaDB, termasuk nama pangkalan data, pengguna, kata laluan, dsb.
    • volum: Lekapkan direktori db pada hos ke direktori /var/lib/mysql bekas.

3. Tulis Fail Docker
Fail Docker ialah fail yang digunakan untuk membina imej Docker. Ia mentakrifkan satu siri arahan untuk menerangkan proses pembinaan imej.

Berikut ialah contoh fail Docker yang mudah:

FROM php:7.4-apache

RUN apt-get update && 
    apt-get install -y libpq-dev && 
    docker-php-ext-install pdo pdo_mysql pdo_pgsql && 
    a2enmod rewrite

WORKDIR /var/www/html

COPY . .

RUN chown -R www-data:www-data /var/www/html
Salin selepas log masuk

Fail Docker ini berdasarkan imej php:7.4-apache rasmi, memasang beberapa kebergantungan dan sambungan, dan menetapkan direktori kerja kepada /var/www/html. Akhir sekali, gunakan arahan COPY untuk menyalin semua fail dalam direktori semasa ke direktori /var/www/html bekas dan tetapkan kebenaran direktori /var/www/html.

4. Mulakan bekas
Selepas melengkapkan persediaan di atas, kita boleh menggunakan arahan berikut untuk memulakan bekas:

$ docker-compose up -d
Salin selepas log masuk

Arahan ini akan memulakan dua bekas yang kita takrifkan (web dan db) dan menjalankannya di latar belakang.

5. Konfigurasikan proksi terbalik Nginx
Secara lalai, Docker Compose akan mencipta rangkaian lalai untuk setiap perkhidmatan. Kita boleh menggunakan nama bekas sebagai nama domain untuk mengakses perkhidmatan dalam bekas.

Walau bagaimanapun, untuk mengawal dan mengurus aplikasi kami dengan lebih baik, kami boleh menggunakan Nginx sebagai proksi terbalik untuk memajukan permintaan ke bekas yang sepadan.

Pertama, kita perlu memasang dan mengkonfigurasi Nginx. Ia boleh dipasang melalui arahan berikut:

$ sudo apt-get install nginx
Salin selepas log masuk

Kemudian, tambahkan kandungan berikut pada fail konfigurasi Nginx:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://web:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Salin selepas log masuk

Dalam fail konfigurasi ini, kami memajukan permintaan ke port 80 bekas bernama web melalui arahan proxy_pass, dan tetapkan beberapa maklumat pengepala berkaitan Proksi.

Akhir sekali, mulakan semula perkhidmatan Nginx untuk menjadikan konfigurasi berkuat kuasa:

$ sudo service nginx restart
Salin selepas log masuk

6. Kesimpulan
Dengan menggunakan Docker Compose, Nginx dan MariaDB, kami boleh memindahkan dan menggunakan aplikasi PHP dengan cepat dan mudah. Docker menyediakan persekitaran yang boleh dipercayai dan boleh diulang yang memisahkan persekitaran berjalan aplikasi daripada persekitaran hos. Fungsi proksi terbalik Nginx boleh melakukan pemajuan trafik dan pengimbangan beban dengan mudah. MariaDB menyediakan pangkalan data hubungan berprestasi tinggi dan boleh dipercayai.

Saya harap artikel ini dapat memberi anda sedikit bantuan dan panduan dalam penghijrahan pantas aplikasi PHP. Jika anda mempunyai sebarang soalan atau kebimbangan, sila berasa bebas untuk bertanya kepada kami. Berseronoklah membina dan mengurus aplikasi dengan Docker!

Atas ialah kandungan terperinci Penghijrahan pantas aplikasi PHP dengan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!