Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menampung Apache, MySQL, dan PHP Dengan Docker

Jika Anda bekerja dengan PHP, dan Anda ingin memiliki satu proses per container, maka saya sarankan menggunakan Nginx dan menggunakan PHP-FPM, karena konfigurasinya jauh lebih mudah daripada Apache untuk jenis pengaturan ini (setidaknya itulah yang saya 'telah ditemukan).

Anda perlu memastikan bahwa Anda memiliki volume bersama yang sama untuk wadah Nginx dan PHP. Dalam volume itu Anda akan memiliki index.php . Berikut adalah contoh kasar docker-compose.yml:

services:
  php7:
    image: "php:7.1.10-fpm"
    container_name: "prefix-php"
    volumes:
      - "./your/local/dir:/var/www/html"
  nginx:
    image: "nginx:1.13.6"
    container_name: "prefix-nginx"
    ports:
      - "80:80"
      - "443:443"
    links:
      - "php7"
    volumes:
      - "./your/local/dir:/var/www/html"

Anda kemudian akan menjalankan perintah berikut ini di direktori tempat docker-compose.yml filenya adalah:

$ docker-compose -p prefix

Alasan untuk "awalan" adalah karena Anda membuat pengelompokan proyek untuk container Anda agar tidak bentrok dengan nama container lainnya.

Tentu saja Anda memerlukan konfigurasi situs nginx yang mengarah ke /var/www/html . Anda akan memiliki sedikit atau tidak ada persyaratan konfigurasi untuk wadah php-fpm.

Catatan tambahan tentang konfigurasi nginx. Docker-compose.yml di atas tidak lengkap tanpa referensi wadah php dalam konfigurasi nginx. Ini akan terlihat seperti ini (secara kasar):

server {
    listen 80 default_server;

    # ...more config, like root, index, server_name, etc

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass prefix-php:9000; # Note the container name here.
        fastcgi_index index.php;
        fastcgi_hide_header X-Powered-By;
        fastcgi_read_timeout 300s;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

    # ...more rules
}

Anda akan melihat saya menamai wadah "php7", Anda sebenarnya bisa menambahkan wadah "php5" lain ke docker-compose.yml ini dan kemudian itu memungkinkan Anda untuk menentukan situs nginx yang menggunakan versi PHP yang berbeda, semuanya berjalan pada pengaturan komposisi buruh pelabuhan yang sama.

Saya menghargai bahwa ini tidak secara langsung menjawab pertanyaan Anda karena tidak menyelesaikannya menggunakan Apache, tetapi ini merupakan alternatif untuk dipertimbangkan.

Semoga ini setidaknya memberi Anda ide untuk membantu menyelesaikan penyiapan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah Anda melakukan loop For Every Row menggunakan MySQL?

  2. MySQL:Bagaimana cara SUM() a TIMEDIFF() pada grup?

  3. MySQL Workbench Error 1175 Bahkan Dengan Pernyataan Where

  4. Hitung nilai yang berbeda

  5. Buat array di PHP dari mysql