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:
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!