Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conteneuriser Apache, MySQL et PHP avec Docker

Si vous travaillez avec PHP et que vous souhaitez avoir un seul processus par conteneur, je vous recommande d'utiliser Nginx et d'utiliser PHP-FPM, car il est beaucoup plus facile à configurer qu'Apache pour ce type de configuration (du moins c'est ce que je 'ai trouvé).

Vous devez vous assurer que vous disposez d'un volume partagé commun aux conteneurs Nginx et PHP. Dans ce volume, vous auriez votre index.php . Voici un exemple brut 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"

Vous exécuterez ensuite cette commande suivante dans le répertoire où se trouve le fichier docker-compose.yml le fichier est :

$ docker-compose -p prefix

La raison du "préfixe" est que vous créez un regroupement de projets pour vos conteneurs afin de ne pas entrer en conflit avec d'autres noms de conteneurs.

Naturellement, vous avez alors besoin d'une configuration de site nginx qui pointe vers /var/www/html . Vous n'aurez que peu ou pas d'exigences de configuration pour le conteneur php-fpm.

Une remarque concernant la configuration nginx. Le docker-compose.yml ci-dessus est incomplet sans le référencement du conteneur php dans la configuration nginx. Cela ressemblerait à ceci (en gros):

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
}

Vous remarquerez que j'ai nommé le conteneur "php7", vous pourriez en fait ajouter un autre conteneur "php5" à ce docker-compose.yml et cela vous permet ensuite de définir des sites nginx qui utilisent différentes versions de PHP, tous exécutés sur la même configuration docker-compose.

J'apprécie que cela ne réponde pas directement à votre question car cela ne le résout pas en utilisant apache, mais c'est une alternative à considérer.

Espérons que cela vous donne au moins des idées pour vous aider à résoudre votre configuration.