sql >> Databáze >  >> RDS >> Mysql

Kontejnerování Apache, MySQL a PHP pomocí Dockeru

Pokud pracujete s PHP a chcete mít jeden proces na kontejner, pak doporučuji používat Nginx a používat PHP-FPM, protože pro tento typ nastavení je podstatně jednodušší konfigurovat než Apache (alespoň já to tak 'našel).

Musíte zajistit, že máte společný sdílený svazek pro kontejnery Nginx i PHP. V tomto svazku byste měli svůj index.php . Zde je hrubý příklad 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"

Poté byste spustili tento následující příkaz v adresáři, kde je docker-compose.yml soubor je:

$ docker-compose -p prefix

Důvodem "prefixu" je to, že vytvoříte seskupení projektů pro své kontejnery, aby nedošlo ke konfliktu s jinými názvy kontejnerů.

Přirozeně pak potřebujete konfiguraci webu nginx, která ukazuje na /var/www/html . Pro kontejner php-fpm budete mít malé nebo žádné požadavky na konfiguraci.

Vedlejší poznámka týkající se konfigurace nginx. Výše uvedený soubor docker-compose.yml je neúplný bez odkazování na kontejner php v konfiguraci nginx. Toto by vypadalo takto (zhruba řečeno):

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
}

Všimněte si, že jsem kontejner pojmenoval "php7", ve skutečnosti byste do tohoto docker-compose.yml mohli přidat další kontejner "php5" a to vám umožní definovat weby nginx, které používají různé verze PHP a všechny běží na stejném nastavení docker-compose.

Oceňuji, že to přímo neodpovídá na vaši otázku, protože to neřeší pomocí Apache, ale je to alternativa ke zvážení.

Doufejme, že vám to poskytne alespoň nápady, které vám pomohou vyřešit vaše nastavení.



  1. Získávat data z MySQL pomocí PHP v reálném čase?

  2. Potíže s nalezením jediného znaku v tabulce SQL

  3. Jak zjistit, které e-maily jsou ve stejných seznamech?

  4. Jak mohu vyplnit sloupec náhodnými čísly v SQL? Dostanu stejnou hodnotu v každém řádku