Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gabungan sempurna Docker Compose, Nginx dan MariaDB: Mengendalikan dan menyelenggara aplikasi PHP dengan cekap

Gabungan sempurna Docker Compose, Nginx dan MariaDB: Mengendalikan dan menyelenggara aplikasi PHP dengan cekap

WBOY
WBOYasal
2023-10-12 09:58:451435semak imbas

Docker Compose、Nginx和MariaDB的完美结合:高效运维PHP应用程序

Gabungan sempurna Docker Compose, Nginx dan MariaDB: Mengendalikan dan menyelenggara aplikasi PHP dengan cekap

Pengenalan

Dengan perkembangan pesat teknologi pengkomputeran awan dan kontena, Docker telah menjadi salah satu alatan yang popular. Dalam pembangunan dan penggunaan aplikasi PHP, menggunakan gabungan Docker Compose, Nginx dan MariaDB boleh menyediakan penyelesaian operasi dan penyelenggaraan yang cekap. Artikel ini akan memperkenalkan cara menggunakan gabungan ini untuk menggunakan dan mengurus aplikasi PHP dengan cepat, serta menyediakan contoh kod khusus.

1. Docker Compose: Alat orkestrasi kontena yang ringkas dan cekap

Docker Compose ialah alat orkestrasi kontena yang ringkas dan cekap yang boleh mentakrifkan dan mengurus penggunaan berbilang bekas Docker melalui fail YAML. Sebelum menggunakan Docker Compose, kita perlu memasang Docker dan Docker Compose secara tempatan. Setelah dipasang, kami boleh mencipta fail docker-compose.yml untuk menentukan bekas untuk aplikasi PHP kami.

Sebagai contoh, berikut ialah contoh fail docker-compose.yml:

version: '3'
services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 8000:80
    volumes:
      - ./src:/var/www/html
    depends_on:
      - mariadb
    links:
      - mariadb
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./src:/var/www/html
    depends_on:
      - php
  mariadb:
    image: mariadb:latest
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=myapp
      - MYSQL_USER=myuser
      - MYSQL_PASSWORD=mypassword
    volumes:
      - ./data:/var/lib/mysql

Dalam contoh di atas, kami telah mentakrifkan tiga perkhidmatan: php, nginx dan mariadb. Perkhidmatan php menggunakan Dockerfile tersuai kami untuk membina bekas. Ia mengikat port 8000 hos ke port 80 bekas, dan melekapkan direktori ./src hos ke direktori /var/www/html bekas. Perkhidmatan nginx secara langsung menggunakan imej nginx yang disediakan secara rasmi dan mengikat port 80 hos ke port 80 bekas. Ia juga melekapkan direktori ./src hos ke direktori /var/www/html bekas dan menyesuaikan konfigurasi nginx melalui fail ./nginx.conf. Perkhidmatan mariadb menggunakan imej mariadb yang disediakan secara rasmi dan mengikat port 3306 hos ke port 3306 kontena. Pada masa yang sama, kami juga menentukan pembolehubah persekitaran mariadb dan pemasangan volum.

2. Nginx: Pelayan Web berprestasi tinggi

Nginx ialah pelayan Web berprestasi tinggi dan pelayan proksi terbalik. Dalam aplikasi PHP kami, menggunakan Nginx sebagai pelayan web bahagian hadapan boleh memberikan kelajuan tindak balas permintaan yang lebih pantas dan keupayaan pemprosesan serentak yang lebih baik. Kami boleh menggunakan dan mengurus Nginx melalui bekas Docker.

Sebagai contoh, kami boleh menggunakan Nginx dengan mentakrifkan perkhidmatan nginx dalam fail docker-compose.yml di atas. Pada masa yang sama, anda boleh menyesuaikan konfigurasi Nginx dengan memasang fail ./nginx.conf.

Berikut ialah contoh fail nginx.conf mudah:

worker_processes auto;
events {
    worker_connections 1024;
}
http {
    sendfile on;
    default_type application/octet-stream;
    server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ .php$ {
            fastcgi_pass php:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
}

Dalam contoh di atas, kami telah menentukan konfigurasi pelayan Nginx asas. Kami menetapkan direktori akar Nginx kepada /var/www/html, menentukan fail indeks lalai, dan mengkonfigurasi peraturan pemprosesan untuk fail PHP. Di sini kami memajukan fail PHP ke port 9000 perkhidmatan PHP melalui arahan fastcgi_pass.

3. MariaDB: Sistem pengurusan pangkalan data yang boleh dipercayai

MariaDB ialah sistem pengurusan pangkalan data hubungan yang serasi dengan MySQL. Dalam aplikasi PHP kami, kami boleh menggunakan MariaDB untuk menyimpan dan mengurus data. Menggunakan dan mengurus MariaDB melalui bekas Docker boleh menyediakan perkhidmatan pangkalan data yang boleh dipercayai.

Sebagai contoh, gunakan MariaDB dengan mentakrifkan perkhidmatan mariadb dalam fail docker-compose.yml di atas. Pada masa yang sama, anda boleh menetapkan kata laluan akar, nama pangkalan data, nama pengguna dan kata laluan dengan menentukan pembolehubah persekitaran.

Di atas ialah langkah asas dan kod contoh untuk menggunakan Docker Compose, Nginx dan MariaDB untuk mengendalikan dan menyelenggara aplikasi PHP dengan cekap. Dengan menggunakan gabungan ini, kami boleh menggunakan dan mengurus aplikasi PHP dengan cepat dan menyediakan persekitaran berjalan yang berprestasi tinggi dan boleh dipercayai.

Ringkasan

Artikel ini menerangkan cara menggunakan gabungan Docker Compose, Nginx dan MariaDB untuk menggunakan dan mengurus aplikasi PHP dengan cepat. Melalui contoh kod konkrit, kami menunjukkan cara untuk mentakrif dan mengurus bekas melalui fail YAML Docker Compose, cara menggunakan Nginx sebagai pelayan web untuk memberikan prestasi yang lebih baik dan cara menggunakan MariaDB untuk menyimpan dan mengurus data. Dengan menggunakan gabungan ini, kami boleh mencapai matlamat untuk mengendalikan dan menyelenggara aplikasi PHP dengan mudah dengan cekap.

Atas ialah kandungan terperinci Gabungan sempurna Docker Compose, Nginx dan MariaDB: Mengendalikan dan menyelenggara aplikasi PHP dengan cekap. 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