Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian luar kotak untuk Docker Compose, Nginx dan MariaDB: Sediakan persekitaran PHP dengan pantas

Penyelesaian luar kotak untuk Docker Compose, Nginx dan MariaDB: Sediakan persekitaran PHP dengan pantas

WBOY
WBOYasal
2023-10-12 12:46:051398semak imbas

Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境

Penyelesaian luar kotak untuk Docker Compose, Nginx dan MariaDB: Sediakan persekitaran PHP dengan pantas

Ikhtisar:

Apabila membangunkan dan menggunakan aplikasi PHP, adalah penting untuk menyediakan yang boleh dipercayai dan mudah- untuk mengurus persekitaran. Docker Compose, Nginx dan MariaDB boleh menyediakan penyelesaian untuk membina persekitaran PHP dengan cepat. Artikel ini akan memperkenalkan cara menggunakan Docker Compose untuk mengkonfigurasi dan menjalankan bekas, menggunakan Nginx sebagai pelayan web, menggunakan MariaDB sebagai pangkalan data dan membina persekitaran PHP dengan cepat.

1. Pasang Docker dan Docker Compose:

Mula-mula, kita perlu memasang Docker dan Docker Compose pada mesin tempatan. Panduan pemasangan untuk sistem pengendalian yang berbeza boleh didapati di laman web rasmi Docker. Selepas pemasangan selesai, sahkan sama ada pemasangan berjaya Anda boleh memasukkan arahan berikut dalam terminal atau command prompt:

docker --version
docker-compose --version

Jika nombor versi boleh dipaparkan dengan betul, ini bermakna Docker dan Docker Compose telah berjaya dipasang.

2 Cipta fail Docker Compose:

Seterusnya, kami perlu mencipta fail yang dipanggil docker-compose.yml dan tentukan perkhidmatan dan konfigurasi kontena kami di dalamnya.

version: '3'
services:
  nginx:
    build:
      context: .
      dockerfile: nginx.dockerfile
    ports:
      - 80:80
    depends_on:
      - php
  php:
    build:
      context: .
      dockerfile: php.dockerfile
    volumes:
      - ./src:/var/www/html
  mariadb:
    image: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=secret

Penjelasan:

  • perkhidmatan nginx: Gunakan arahan bina untuk membina bekas berasaskan Nginx, petakan port 80 mesin tempatan ke port 80 kontena dan bergantung pada perkhidmatan php. Perkhidmatan
  • php: Gunakan arahan bina untuk membina bekas yang mengandungi sambungan PHP yang diperlukan dan lekapkan direktori ./src mesin tempatan ke direktori /var/www/html bekas untuk mencapai kemas kini segerak kod .
  • perkhidmatan mariadb: Gunakan imej lalai MariaDB Docker dan tetapkan kata laluan ROOT kepada rahsia.

3 Cipta fail Docker dan fail konfigurasi:

Seterusnya, kita perlu mencipta fail Docker dan fail konfigurasi untuk menyediakan konfigurasi dan kebergantungan yang diperlukan semasa membina imej.

  1. nginx.dockerfile:
FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf

Penjelasan: Bina imej baharu daripada imej Nginx rasmi, dan kemudian salin fail nginx.conf dan default.conf setempat ke lokasi bekas yang sepadan.

  1. php.dockerfile:
FROM php:7.4-fpm

RUN apt-get update && apt-get install -y 
    zlib1g-dev 
    libzip-dev 
    && docker-php-ext-install zip pdo_mysql

COPY php.ini /usr/local/etc/php/conf.d/custom.ini

Penjelasan: Bina imej baharu daripada imej PHP rasmi, kemudian gunakan arahan apt-get untuk memasang kebergantungan yang diperlukan, dan pasang sambungan zip dan pdo_mysql melalui docker-php-ext -memasang arahan . Akhir sekali, salin fail php.ini tempatan ke bekas.

  1. nginx.conf:
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        root   /var/www/html;
        index  index.php index.html;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ .php$ {
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Penjelasan: Ini ialah fail konfigurasi Nginx. Dikonfigurasikan dengan laluan log lalai, tetapan acara, tetapan http dan blok pelayan asas untuk mengendalikan permintaan dan menyerahkan pemprosesan PHP kepada bekas php.

  1. default.conf:
server {
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Penjelasan: Ini ialah fail konfigurasi lalai Nginx. Sama seperti tetapan blok pelayan dalam fail nginx.conf.

4 Mula membina dan menjalankan bekas:

Selepas menyediakan semua fail konfigurasi, kami boleh mula membina dan menjalankan bekas. Dalam terminal atau command prompt, pergi ke direktori di mana fail docker-compose.yml berada dan jalankan arahan berikut:

docker-compose up --build

Arahan ini akan memulakan proses membina imej dan menjalankan bekas. Setelah selesai, anda akan melihat bekas berjalan dan aplikasi PHP boleh diakses melalui http://localhost.

Jika anda perlu menjalankan bekas di latar belakang, anda boleh menggunakan arahan berikut:

docker-compose up -d --build

Arahan ini akan menjalankan bekas dalam mod daemon.

Ringkasan:

Dengan penyelesaian luar biasa untuk Docker Compose, Nginx dan MariaDB, kami boleh membina dan mengurus persekitaran PHP dengan cepat. Kelebihan mudah alih dan kontena Docker menjadikan pembangunan dan penggunaan aplikasi PHP lebih mudah dan lebih dipercayai. Saya harap artikel ini membantu anda Untuk butiran lanjut tentang contoh kod, sila rujuk fail konfigurasi yang dinyatakan dalam artikel ini.

Atas ialah kandungan terperinci Penyelesaian luar kotak untuk Docker Compose, Nginx dan MariaDB: Sediakan persekitaran PHP dengan pantas. 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