


Amalan Terbaik untuk Docker Compose, Nginx dan MariaDB: Reka Bentuk Seni Bina Aplikasi PHP Sangat Tersedia
Amalan Terbaik untuk Docker Compose, Nginx dan MariaDB: Reka Bentuk Seni Bina Aplikasi PHP Yang Sangat Tersedia
Pengenalan:
Dalam era Internet hari ini, membina aplikasi yang sangat tersedia telah menjadi semakin penting. Apabila bilangan pengguna Internet meningkat, prestasi aplikasi, kebolehpercayaan dan skalabiliti menjadi pertimbangan utama. Artikel ini akan memperkenalkan cara menggunakan Docker Compose, Nginx dan MariaDB untuk mereka bentuk seni bina aplikasi PHP yang sangat tersedia, dan menyediakan contoh kod khusus.
Bahagian Pertama: Gambaran Keseluruhan Seni Bina
Kami ingin membina aplikasi PHP yang sangat tersedia yang perlu memenuhi keperluan berikut:
- Kebolehpercayaan tinggi: aplikasi yang boleh menyediakan ketersediaan tinggi apabila pelayan gagal atau rangkaian tidak normal bertukar secara automatik ke pelayan sandaran.
- Skalabiliti: Mampu menskalakan kapasiti aplikasi secara dinamik mengikut permintaan untuk mengatasi akses serentak tinggi secara tiba-tiba.
- Pengoptimuman Prestasi: Meningkatkan prestasi aplikasi dan responsif dengan menggunakan Nginx sebagai pelayan proksi terbalik dan pengimbang beban.
- Kebolehpercayaan Pangkalan Data: Gunakan MariaDB sebagai pangkalan data aplikasi anda dan pastikan kebolehpercayaan dan konsistensi data.
Bahagian 2: Membina Imej Docker
Sebelum membina aplikasi PHP yang sangat tersedia, kita perlu membungkus aplikasi dan semua kebergantungan ke dalam imej Docker terlebih dahulu. Anda boleh menggunakan Dockerfile untuk menentukan proses binaan imej Docker.
Berikut ialah contoh Dockerfile:
# 使用基础PHP镜像 FROM php:7.4-fpm # 安装PHP依赖项 RUN apt-get update && apt-get install -y git zip curl libpng-dev libonig-dev libxml2-dev && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd # 设置工作目录 WORKDIR /var/www/html # 将应用程序复制到工作目录 COPY . . # 安装依赖项 RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN composer install --no-scripts --no-autoloader # 自动生成Autoload文件 RUN composer dump-autoload --optimize # 修改文件权限 RUN chown -R www-data:www-data /var/www/html/storage # 启动PHP-FPM服务器 CMD ["php-fpm"] # 暴露端口 EXPOSE 9000
Menggunakan Dockerfile di atas, kita boleh membina imej Docker yang mengandungi aplikasi dan semua kebergantungan. Imej boleh dibina menggunakan arahan berikut:
docker build -t myapp .
Bahagian Tiga: Membina Seni Bina Menggunakan Docker Compose
Seterusnya, kami akan menggunakan Docker Compose untuk mentakrif dan mengurus keseluruhan seni bina aplikasi PHP yang tersedia. Docker Compose ialah alat untuk mentakrif dan menjalankan aplikasi Docker berbilang bekas.
Berikut ialah contoh fail docker-compose.yaml:
version: '3' services: app: build: context: . dockerfile: Dockerfile volumes: - .:/var/www/html ports: - 9000 networks: - my-network nginx: image: nginx volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./site.conf:/etc/nginx/conf.d/default.conf ports: - 80:80 depends_on: - app networks: - my-network db: image: mariadb restart: always environment: MYSQL_ROOT_PASSWORD: 'password' networks: - my-network networks: my-network:
Dalam fail docker-compose.yaml bagi contoh di atas, kami mentakrifkan tiga perkhidmatan: app, nginx dan db. Antaranya, perkhidmatan aplikasi adalah imej aplikasi PHP yang kami bina sebelum ini. Perkhidmatan nginx menggunakan imej rasmi Nginx. Perkhidmatan db ialah imej rasmi MariaDB.
Kami juga mentakrifkan rangkaian yang dipanggil my-network untuk menyambung ketiga-tiga perkhidmatan ini.
Bahagian 4: Mengkonfigurasi Nginx sebagai pelayan proksi terbalik dan pengimbang beban
Untuk meningkatkan prestasi dan kelajuan tindak balas aplikasi, kami akan menggunakan Nginx sebagai pelayan proksi terbalik dan pengimbang beban.
Berikut ialah contoh fail nginx.conf:
user www-data; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log combined; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; }
Dalam contoh di atas, kami menyatakan konfigurasi Nginx. Seterusnya, kita perlu menentukan konfigurasi tapak untuk Nginx.
Berikut ialah contoh fail site.conf:
server { listen 80; server_name myapp.example.com; location / { proxy_pass http://app:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100M; proxy_buffering off; proxy_request_buffering off; } }
Dalam contoh di atas, kami menentukan hos maya Nginx untuk memproksi semua permintaan HTTP ke port 9000 perkhidmatan aplikasi.
Bahagian 5: Seni Bina Berjalan
Gunakan arahan berikut untuk memulakan seni bina aplikasi PHP yang sangat tersedia yang kami takrifkan:
docker-compose up -d
Kini, aplikasi PHP kami yang sangat tersedia telah berjaya dijalankan. Kebolehgunaan dan prestasi aplikasi boleh diuji dengan melawati http://myapp.example.com.
Kesimpulan:
Dengan menggunakan Docker Compose, Nginx dan MariaDB, kami boleh mereka bentuk dan membina seni bina aplikasi PHP yang sangat tersedia. Docker Compose boleh membantu kami mentakrif dan mengurus aplikasi berbilang bekas, Nginx boleh menyediakan proksi songsang berprestasi tinggi dan fungsi imbangan beban, dan MariaDB boleh menyediakan perkhidmatan pangkalan data yang boleh dipercayai dan stabil. Melalui seni bina ini, kami boleh meningkatkan ketersediaan, kebolehpercayaan dan prestasi aplikasi serta memenuhi keperluan pengguna untuk aplikasi berkualiti tinggi.
Atas ialah kandungan terperinci Amalan Terbaik untuk Docker Compose, Nginx dan MariaDB: Reka Bentuk Seni Bina Aplikasi PHP Sangat Tersedia. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Empat cara untuk keluar dari Docker Container: Gunakan Ctrl D di terminal kontena masukkan perintah keluar di terminal kontena Gunakan Docker Stop & lt; container_name & gt; Perintah Gunakan Docker Kill & lt; container_name & gt; Perintah di terminal tuan rumah (keluar kuasa)

Kaedah untuk menyalin fail ke tuan rumah luaran di Docker: Gunakan arahan CP Docker: Jalankan Docker CP [Options] & lt; Container Path & GT; & lt; PATH HOST & GT;. Menggunakan jumlah data: Buat direktori pada tuan rumah, dan gunakan parameter -V parameter untuk memasang direktori ke dalam bekas apabila membuat bekas untuk mencapai penyegerakan fail bidirectional.

Kaedah Melihat Proses Docker: 1. Docker CLI Command: Docker PS; 2. Systemd CLI Command: Sistem Status SistemCTL; 3. Docker mengarang arahan CLI: Docker-Compose PS; 4 Proses Explorer (Windows); 5. /Direktori Proc (Linux).

Cara memulakan semula bekas Docker: Dapatkan ID Container (Docker PS); Hentikan bekas (Docker Stop & lt; container_id & gt;); Mulakan bekas (Docker Start & lt; container_id & gt;); Sahkan bahawa permulaan semula berjaya (Docker PS). Kaedah lain: Docker mengarang (Docker-Compose Restart) atau Docker API (lihat Dokumentasi Docker).

Untuk menyimpan imej di Docker, anda boleh menggunakan arahan Docker Commit untuk membuat imej baru, yang mengandungi keadaan semasa bekas yang ditentukan, Sintaks: Docker Commit [Options] Nama Imej Container ID. Untuk menyimpan imej ke repositori, anda boleh menggunakan arahan PUSH Docker, Sintaks: Docker Push Nama Imej [: TAG]. Untuk mengimport imej yang disimpan, anda boleh menggunakan arahan tarik docker, sintaks: docker tarik nama imej [: tag].

Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data
