Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konteneryzacja Apache, MySQL i PHP za pomocą Docker

Jeśli pracujesz z PHP i chcesz mieć jeden proces w kontenerze, polecam używać Nginx i PHP-FPM, ponieważ jest znacznie łatwiejszy do skonfigurowania niż Apache dla tego typu konfiguracji (przynajmniej to jest to, co ja znalazłem).

Musisz upewnić się, że masz wspólny wolumin współdzielony dla kontenerów Nginx i PHP. W tym woluminie miałbyś swój index.php . Oto prosty przykład docker-compose.yml:

Usługi
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"

Następnie należy uruchomić następujące polecenie w katalogu, w którym docker-compose.yml plik to:

$ docker-compose -p prefix

Powodem „prefiksu” jest to, że tworzysz grupowanie projektów dla swoich kontenerów, aby nie kolidować z innymi nazwami kontenerów.

Oczywiście wtedy potrzebujesz konfiguracji witryny nginx, która wskazuje na /var/www/html . Będziesz mieć niewiele wymagań konfiguracyjnych dla kontenera php-fpm.

Uwaga dodatkowa dotycząca konfiguracji nginx. Powyższy plik docker-compose.yml jest niekompletny bez odwoływania się do kontenera php w konfiguracji nginx. Wyglądałoby to tak (w skrócie):

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
}

Zauważysz, że nazwałem kontener „php7”, możesz faktycznie dodać kolejny kontener „php5” do tego docker-compose.yml a następnie pozwala to na zdefiniowanie witryn nginx, które używają różnych wersji PHP działających na tej samej konfiguracji docker-compose.

Rozumiem, że nie odpowiada to bezpośrednio na twoje pytanie, ponieważ nie rozwiązuje go za pomocą apache, ale jest to alternatywa do rozważenia.

Mam nadzieję, że to przynajmniej podsunie Ci pomysły, które pomogą rozwiązać Twoją konfigurację.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Query IN() Klauzula wolno w indeksowanej kolumnie

  2. Zapytanie MySQL „NIE W” 3 tabele

  3. Python, Konwertuj 9 krotek daty UTC na format daty i czasu MySQL

  4. Dodaj źródło danych My SQL w programie VIsual Studio express 2013

  5. Zapytanie MySQL zawiesza się i musi przerwać proces